SVG霓虹灯效果

地铁上逛segmentfault看到一篇用纯css和SVG来实现的很赞的效果,觉得拿来做一些开场效果动画应该不错。

原文地址:https://segmentfault.com/a/1190000010963326

觉得很有趣,正好925快到了,就撸了一个生日快乐的

效果图如下:

就像是一圈圈蚂蚁在它身上爬。。。。。emmmmm奇特的比喻

fill:none;可以让图形不被填充,如果不添加这一属性,则默认填充颜色是black,这个效果

发现stroke这一系列属性都很有意思啊,填充啊透明度和stroke-linecap,但是这个效果用的最多的还是stroke-dasharray和stroke-dashoffset。

借鉴解释:http://www.zhangxinxu.com/wordpress/2014/04/animateion-line-drawing-svg-path-%E5%8A%A8%E7%94%BB-%E8%B7%AF%E5%BE%84/

  • stroke-miterlimit 表示描边相交(锐角)的表现方式。默认大小是4. 什么斜角转斜面的角度损耗之类的意思,值越大,损耗越小。具体干嘛的,我自己也不确定。大家可查查其他资料。
  • stroke-dasharray 表示虚线描边。可选值为:none<dasharray>inherit. 其中,none表示不是虚线;<dasharray>为一个逗号或空格分隔的数值列表。表示各个虚线端的长度。可以是固定的长度值,也可以是百分比值;inherit表继承。
  • stroke-dashoffset 表示虚线的起始偏移。可选值为:<percentage><length>inherit. 百分比值,长度值,继承。
  • stroke-opacity 表示描边透明度。默认是1.

特别佩服作者列举的一个生动形象的例子:

一根火腿肠12厘米,要在上面画虚线,虚线间隔有15厘米,如果没有dashoffset,则火腿肠前面15厘米会被辣椒酱覆盖!实际上只有12厘米,因此,我们看到的是整个火腿肠都有辣椒酱。现在,dashoffset也是15厘米,也就是虚线要往后偏移15厘米,结果,辣椒酱要抹在火腿肠之外,也就是火腿肠上什么辣椒酱也没有。如果换成上面的直线SVG,也就是直线看不见了。我们把dashoffset值逐渐变小,则会发现,火腿肠上的辣椒酱一点一点出现了,好像辣椒酱从火腿肠根部涂抹上去一样。

<style type="text/css">
body{
background-color: #00688B;
}
.text{
font-size: 64px;
font-weight: normal;
text-transform: uppercase;

fill:none;
stroke: #B0E0E6;
stroke-width: 2px;
/stroke-dasharray: 90 310;

animation: stroke 6s infinite linear;
}

.text-1{
stroke: #FFEC8B;
animation-delay:-1.5s;
text-shadow:5px 5px 5px #FFEC8B;
}
.text-2{
stroke:#AEEEEE;
animation-delay:-3s;
text-shadow:5px 5px 5px #7FFFD4;
}
.text-3{
stroke:#EEE0E5;
animation-delay:-4.5s;
text-shadow:5px 5px 5px #7FFFD4;
}
.text-4{
stroke:#FFC1C1;
animation-delay:-6s;
text-shadow:5px 5px 5px #7FFFD4;
}
@keyframes stroke {
to {
stroke-dashoffset: -400;
}
}

</style>

<svg width="100%" height="100">
<text text-anchor="middle" x="50%" y="50%" class="text text-1" >
Happy birthday to you?
</text>
<text text-anchor="middle" x="50%" y="50%" class="text text-2" >
Happy birthday to you?
</text>
<text text-anchor="middle" x="50%" y="50%" class="text text-3" >
Happy birthday to you?
</text>
<text text-anchor="middle" x="50%" y="50%" class="text text-4" >
Happy birthday to you?
</text>
</svg>

只需要用到svg里面的描边(stroke)和填充(fill)就可以达成。数值各种花样调试有惊喜!??ヽ(°▽°)ノ?

放上一些SVG基础知识的链接以供大家参考:http://www.w3cplus.com/svg/svg-fill-stroke.html

时间: 2024-10-27 08:56:24

SVG霓虹灯效果的相关文章

Android实现炫酷SVG动画效果

svg是目前十分流行的图像文件格式了,svg严格来说应该是一种开放标准的矢量图形语言,使用svg格式我们可以直接用代码来描绘图像,可以用任何文字处理工具打开svg图像,通过改变部分代码来使图像具有交互功能,并可以随时插入到HTML中通过浏览器(如火狐浏览器)来观看.使用svg格式可让你设计激动人心的.高分辨率的Web图形页面. svg格式具备目前网络流行的jpg和png等格式无法具备的优势:可以任意放大图形显示,但绝不会以牺牲图像质量为代价;可在svg图像中保留可编辑和可搜寻的状态;平均来讲,s

android 霓虹灯效果

package com.example.test; import java.util.Timer; import java.util.TimerTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; import android.view.Menu; import android.widget.TextView; publi

FrameLayout和handle实现霓虹灯效果

这个程序的主要思想就是在一个FrameLayout中定义多个TextView,分别设置不同的背景色.因为帧布局的特性,所以这些控件都是叠加起来的.然后,通过定时器循环给handler发送消息,改变控件的背景色.最后就能实现霓虹灯的效果了,本实例不怎么实用,仅仅能做一般练习而已. 布局文件 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://

帧布局实现霓虹灯效果

Framelayout即帧布局,使用这种布局可以把几个控件叠加在一起.使用Framelayout结合textview就可以实现一个简单的霓虹灯效果. 一.首先在XML中使用了FrameLayout布局并添加六个TestView文件,并设定了颜色和位置. XML布局如下: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.and

Android突击:FrameLayout制作霓虹灯效果

1,FrameLayout的层叠嵌套,类似于Photoshop的图层.可以实现类似霓虹灯的效果. 代码大致如下: 首先是main.xml: 主要是几个TextView用来填充,使用的是FrameLayout的布局. <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android&quo

【OneAPM】极客编程挑战#025:发挥想象生成漂亮炫酷的SVG动画效果

活动链接:http://www.gbtags.com/gb/share/5610.htm 本期挑战 提供如下的SVG图形,请使用任何技术生成基于如下SVG图形的动画效果,看看谁设计的动画效果最酷 ~~ <svg width="720px" height="486px"> <g id="layer1"> <path style="fill:#888888" d="m 434.02002,3

iOS 霓虹灯效果

总体思路如下: 利用for 循环创建N个view,并将他们添加到可变数组中,利用NSTimer,实现循环变色的效果(changeColor:),变色的思路:将第i个view 的背景色 和第i + 1 个view 的背景色交换,换完一轮即可,(NSTimer 会自动实现循环) 这里是在试图控制器中写的,所以 把view 添加到self.view里, self.view.subviews(是一个数组(里边是各个VIEW)) - (void)viewDidLoad {    [super viewDi

svg动画效果

<!DOCTYPE html> <html> <body> <p><b>Note:</b> This example only works in Firefox and Google Chrome.</p> <svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <rect x="20" y=

Android 帧布局FrameLayout之霓虹灯效果

FrameLayout的常用XML属性及相关方法 XML 属性       相关属性 说明 android:foreground setForeground(Drawable) 设置该帧布局容器的前景图像 android:foregroundGravity setForegroundGravity(int) 定义绘制前景图像的gravity属性 帧布局的页面定义文件: 1 <?xml version="1.0" encoding="utf-8"?> 2