像是有人一点一点绘制一样的动画效果。
定义一条线、文本、或元素轮廓颜色
定义一条线、文本或元素轮廓的厚度
描边端点表现形式
<svg>
<g fill='none' stroke='black' stroke-width='10'>
<path stroke-linecap='butt' d='M5 20 l215 0' />
<path stroke-linecap='round' d='M5 40 l215 0' stroke='red'/>
<path stroke-linecap='square' d='M5 60 l215 0' />
g>
svg>
用于创建虚线
stroke-dasharray = '10'
stroke-dasharray = '10, 10'
stroke-dasharray = '10, 10, 5, 5'
绘制虚线:
一个参数时:表示一段虚线长度和每段虚线之间的间距
两个参数或者多个参数时:一个表示长度一个表示间距
定义一条线,文本或元素距离(相当于基于position:relative; 设置left值。只是不像left单纯的基于x方向设置,stroke-dashoffset是基于svg路径设置的)
正值向左移动,负值向右移动
stroke-dasharray和stroke-dashoffset相结合可以做出很炫酷的效果
举个栗子:按钮鼠标滑过动效(鼠标滑过按钮,边框自身旋转一周)
#shape {
stroke-width: 6px;
fill: transparent;
stroke: #009FFD;
stroke-dasharray: 85 400;
stroke-dashoffset: -220;
transition: 1s all ease
}
svg:hover #shape {
stroke-dasharray: 70 0;
stroke-width: 3px;
stroke-dashoffset: 0;
stroke: #06D6A0
}
width="150">
"shape" height="40" width="150" />
tips:如果不理解动效的变化过程可以把transition中的时间改大一些,动效变慢些就可以清楚边框的变化过程
描边转角的表现方式
stroke-linejoin = miter
stroke-linejoin = round
stroke-linejoin = bevel
描边透明度
在做动画效果的时候需要给stroke-dasharray和stroke-dashoffset设置路径的长度,要想获取路径的准确长度,可以借助下面的JavaScript代码:
var path = document.querySelector('path');
var length = path.getTotalLength();
先画一个闪电
<svg width="580" height="400">
<path d="m262.59622,90.56177l34.74561,60.80042l-14.32703,7.17541l43.75135,52.09264l-14.32061,8.69967l54.08581,87.23186l-91.73919,-66.84884l17.49797,-9.28344l-57,-42.81731l20.425,-13.23194l-60.18379,-44.91723l67.06487,-38.90124z">
svg>
path {
stroke: #000;
fill: transparent;
stroke-width: 1.5px;
}
@keyframes act {
100% {
stroke-dashoffset: 0;
}
}
用js获取路径长度
然后添加样式
var char = 'http://www.w3.org/2000/svg',
path = document.getElementsByTagNameNS(char, 'path')[0],
len = path.getTotalLength();
path.style.strokeDasharray = len;
path.style.strokeDashoffset = len;
path.style.animation = 'act 2s linear forwards';
参考网址
http://www.zhangxinxu.com/wordpress/2014/04/animateion-line-drawing-svg-path-%E5%8A%A8%E7%94%BB-%E8%B7%AF%E5%BE%84/
http://blog.csdn.net/ning0_o/article/details/54970474
http://blog.csdn.net/q1056843325/article/details/54564332
THE END