介绍
SVG SMIL animation 可以很容易实现元素沿着不规则的路径运动动画,但由于其依赖 SVG 元素和 HTML 属性,容易造成复用时的冗余,不利于维护。新 CSS 属性 offset-path 可以看成是其替代方案,它指定了元素的运动路径,并定义元素在父容器或 SVG 坐标系中的定位。
与其相关的几个属性:
- offset-distance 指定元素沿 offset-path 路径运动的距离,可以是数值或者百分比单位,100% 则表示把所有的路径都跑完了。
- offset-position 定义元素的 offset-path 初始位置,类似于属性 background-position。
- offset-anchor 指定 offset-path 路径框内的原点,其属性值和 transform-origin 类似。
- offset-rotate 定义元素沿 offset-path 路径的角度,默认是 auto,表示自动计算当前路径的切线方向,并朝着这个方向前进。
offset-anchor、offset-distance、offset-path、offset-position、offset-rotate 可以简写为一个属性 offset。
1 | [ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]? |
使用
只需要设置元素的 offset-path 和原路径重合即可。
作为对比,下面是使用 SVG SMIL animateMotion 元素实现的动画。
示例
下面这个示例则是一个剪刀沿着一个房子图形运动的轨迹动画。
1 | <body> |
浏览器兼容
目前只有 Safari 浏览器不支持 offset-path 的路径函数。
参考资料
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 张坤的博客!
评论