博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
svg animation动画应用
阅读量:7198 次
发布时间:2019-06-29

本文共 1203 字,大约阅读时间需要 4 分钟。

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

图片描述

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

于是我决定用代码实现整个动图。

图片描述

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

拿我这次做的动图来说

图片描述

整体由css操作png和svg搭建流转路线构成

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

1.svg path

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

总之就是很长很乱的一段。。。

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

图片描述

对比上面的代码可以看出路径d由M作为路径起始坐标点开始z结束这段闭合曲线

直线由L或者l绘制,分别代表绝对路径和相对路径
曲线由贝塞尔曲线规则绘制
C(C x1, y1, x2, y2, x,y )
为了更方便展现出贝塞尔的奥义,举下图说明:

clipboard.png

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

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

绘制

  • 直接上path

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

动画

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

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

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

区别在于:

clipboard.png

clipboard.png

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

直接上代码:

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

图片描述

然后我们需要让这段渐变的颜色动起来

<animation>

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

图片描述

转载地址:http://rmzum.baihongyu.com/

你可能感兴趣的文章
iOS编程——Objective-C KVO/KVC机制[转]
查看>>
读书笔记2013第9本:《注意力曲线----打败分心与焦虑》
查看>>
Oracle Move a Datafile from Filesystem & ASM
查看>>
通往财富自由之路3--开始一年的财富自由之旅
查看>>
深度学习预测比特币价格
查看>>
NumPy和Pandas常用库
查看>>
asp.net 操作 cookie
查看>>
Go并发编程基础(译)
查看>>
架构的整理
查看>>
《循序渐进学Spark 》Spark 编程模型
查看>>
Linux集群和自动化维2.6.5 自动化类脚本
查看>>
《HTML5+CSS3网页设计入门必读》——2.3 错误处理
查看>>
Java 集合教程
查看>>
本文来自合作伙伴“阿里聚安全”.
查看>>
创建自己的ruby Gems
查看>>
测不准原理?记一次Guava队列问题的排查
查看>>
可以快速保存、访问和粘贴文本片段的Unity漂亮工具
查看>>
支付宝体验设计精髓. 导读
查看>>
阿里云文件存储助力悦跑圈上云之成功案例
查看>>
MySQL · 8.0.0新特性 · ROLE
查看>>