使用 svg 让线条动起来
百度echarts3官网 上有一个非常好看的绘制 logo 的效果,通过 svg 就能实现:
与此类似的还有绘制签名的过程:
其实原理很简单,只要充分发挥想象力,加上好看的设计,就能完成很多意想不到的效果了。
准备 svg
首先要准备绘制的路径,SVG里用 path 来定义路径
网上可以找到很多在线的或客户端可以用来生成 svg,比如写这个 demo 用到的是 这个在线编辑svg的网站。
主要属性
有了一段 path 之后,我们就可以开始让它动起来了,这里涉及到两个属性:
- stroke-dasharray
- stroke-dashoffset
stroke-dasharray
可以让线条变成虚线,第一个值设置每段虚线的长度,第二个值设置虚线之间的间隔,如:
原线条:
设置 stroke-dasharray: 20 5
之后:
stroke-dashoffset
用来设置虚线的偏移量
原理
可以想到,如果我们设置每段虚线的长度和虚线之间的间隔都大于整条路径的长度,那么虽然看起来没有变化,但实际上整个路径显示出来的只是一小段虚线。
接着我们设置 stroke-dashoffset
让这条虚线偏移一个路径的长度,此时路径就不可见了,因为已经虚线已经偏移出路径了,而虚线间的空隙是大于一个路径长的。
最后我们通过动画让 stroke-dashoffset
缓慢变为 0,这时就有绘制的效果了。
代码示例:
当要绘制签名这种有很多线条的图形时,只需要给每一段都设置好时间,通过 transition
的 delay
来控制开始时间即可。
当要绘制本文一开始出现的闭合图形时,可以通过改变 stroke-dasharray
中的长度和间隔来控制。