svg animation动画应用

最近在做首页动画的时候,引入有背景色的mp4动图时,动图的背景色不能很好的融入相同背景色的不同浏览器和不同显示器,出现了下图这种尴尬的情况:

svg animation动画应用_第1张图片

动图的边界始终有根分界线,即使调整了背景色适应这个边界,也总是会在不同的显示器中显示出不同程度的分界线。
于是我决定用代码实现整个动图。

svg animation动画应用_第2张图片

制作这样一套动图,只靠前端攻城狮是有点费劲的,毕竟需要很多线图的绘制,没有专业的UI支持很难设计出标准漂亮的动图。
拿我这次做的动图来说

整体由css操作png和svg搭建流转路线构成
首先需要UI同学把整体布局,距离、素材规划出来
然后就是根据整体布局和距离把素材扑上去
最最重要的是svg绘制的流动线路

1.svg path

这种线路图,UI同学一般绘制完都是向下面这样的:


总之就是很长很乱的一段。。。
这是因为AI绘制svg的时候每一条线都是由两条线和一些弯曲的规则(贝塞尔曲线)组成。建议直接用UI同学给的svg编辑器打开后直接引用,因为”贝塞尔曲线“真的不是随便就能Hold住的。。。
下面附上svg path指令

svg animation动画应用_第3张图片

对比上面的代码可以看出路径d由M作为路径起始坐标点开始z结束这段闭合曲线
直线由L或者l绘制,分别代表绝对路径和相对路径
曲线由贝塞尔曲线规则绘制
C(C x1, y1, x2, y2, x,y )
为了更方便展现出贝塞尔的奥义,举下图说明:

svg animation动画应用_第4张图片
然鹅,真正使用指令徒手敲代码画图的时候才真正发现,这就是个坑啊。。。毕竟我们还要测量距离、像素,找起点、终点,最头疼的是还要用贝塞尔绘制折线曲率。。。有这时间还不如去学学UI了?当然,无权阻止大神们的探索。。。

所以踩了这些坑的我还是直接用了UI绘制好的svg

绘制

  • 直接上path

    

首先这样肯定是可以绘制出线的,但是我们的目的不光是要画出线,还要在线上加动画效果

动画

我是用一小段渐变色的流动来表示数据的流动,所以首先需要给线段--渐变色

在SVG中,有两种主要的渐变类型:

  • 线性渐变(LinearGradient)
  • 放射性渐变|径向渐变(RadialGradient)

区别在于:

svg animation动画应用_第5张图片
svg animation动画应用_第6张图片

使用径向渐变可以定义渐变中心原点的坐标,半径,更方便加在线上。
直接上代码:


  
  
  

渐变的颜色范围可由两种或多种颜色组成。每种颜色通过一个标签来规定。offset属性用来定义渐变的开始和结束位置。大致效果如下:

svg animation动画应用_第7张图片
然后我们需要让这段渐变的颜色动起来


attributeName要变化的元素属性名称分别为x轴和y轴方向,values是每一个经过的关键值坐标点,可以直接用Adobe AI打开svg在线上直接拿到关键点的坐标分别写入cx,cy的value中,调整dur时间,加上indefinite循环:
图片描述

你可能感兴趣的:(svg animation动画应用)