![[CSS] svg路径动画,第1张 [CSS] svg路径动画,第1张](/aiimages/%5BCSS%5D+svg%E8%B7%AF%E5%BE%84%E5%8A%A8%E7%94%BB.png)
在制作CSS动画的时候,经常会有这样的需求,
让一个方块 沿着给定的路径 运动。
如果运动路径是不规则的,通过设置 top , left 的属性值,就显得非常困难了。
这时候可以借助svg来实现。
path 元素的形状是通过它的 d 属性 定义的,
d 属性的值,是一个“命令+参数”的序列。
其中, M 20 30 L 160 180 ,包含了2个命令序列,
M 20 30 ,表示将画笔移动到坐标 20,30 处,
L 160 180 ,表示从画笔当前位置,到 160,180 位置画直线。
path元素支持多种命令,可以参考这里, curve commands
html元素的CSS样式属性 offset-path ,表示 偏移路径 。
通过指定 offset-path 的值为path元素的 d 属性值,我们可以实现元素沿着给定的 path 路径运动。
其中, offset-distance 指定了元素偏移初始位置的百分比。
通过在 @keyframes 中逐帧更改 offset-distance ,可以实现动画效果。
我们修改path的 d 属性为 M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80 ,
相应的也修改小方块的 offset-path 属性。
就可以实现小方块沿着path运动的效果了。
MDN: paths
MDN: offset-path
MDN: offset-distance
A How-to Guide to SVG Animation
Scalable Vector Graphics (SVG) 2 - Chapter 9: Paths
看到网页上炫酷的图形轮廓线路径动画你是否会动心,想要自己来制作一个呢?其实这个特效实现起来并不难,使用轻量级HTML5插件jquery-drawsvg就可以实现了,jquery-drawsvg是一款轻量级的使用jQuery来绘制SVG图形轮廓线路径动画的插件。该插件使用jQuery内置的动画引擎来使SVG元素中path元素产生动画,其底层实现使用的是stroke-dasharray和stroke-dashoffset属性。该SVG路径动画插件的特点有:
轻量级,压缩后小于2kb
使用简单
支持Easing过渡动画效果
演示地址:http://www.htmleaf.com/Demo/201509112558.html
插件下载地址:http://down.htmleaf.com/1509/201509111546.zip
使用方法:
使用该SVG图形轮廓线路径动画插件需要引入jQuery和jquery.drawsvg.js文件。
<script src="js/jquery.min.js"></script>
<script src="js/jquery.drawsvg.js"></script>
初始化插件
在页面DOM元素加载完毕之后,可以通过下面的方法来使SVG图形生成轮廓线动画效果。
首先将初始化的对象实例保存为一个变量:
var mySVG = $('#my_svg_element').drawsvg()
然后就可以执行动画效果了:
mySVG.drawsvg('animate')
配置参数
下面是该SVG路径动画创建的可用配置参数:
参数类型默认值描述durationInteger1000完成每一个路径动画的持续时间staggerInteger200每一个路径动画开始前的延迟时间easingStringswing使用jQuery
Easing插件的过渡动画效果reverseBooleanfalse是否反向绘制callbackFunctionfunction()
{}路径动画完成之后的回调函数
原理就是将svn的长度平分100次,每100ms走一次,每次的坐标通过 path.getPointAtLength(totalLength/STEP * curStep)计算,然后通过js控制小车的位置。通过setimeout可以配置小车运动的快慢,还可以通过缓动函数,使小车具有惯性。
转自链接: https://www.jianshu.com/p/394d8955eed5
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)