python animation path_帅气的SVG路径描边动画 (path animation) 实战应用
这是我的一个关于SVG的应用的技术分享网站svgtrick.com,会同步一些文章到这里来,更多关于SVG技术应用可以去网站看看。
要是觉得文章还不错的话,可以多多推荐哦。
今天这篇文章来聊聊SVG路径描边动画。
关于路径描边动画大家可以去看看这两个网站,Playstation 4和Xbox One,这两个网站中就使用了SVG中的路径(path)来实现的描边动画效果。
上面图所示的效果就是我们要实现的效果。
准备矢量文件
在实际编写动画效果前,最重要的是要准备矢量文件。第一步是要使用Illustrator来创建你需要描边效果的矢量文件,需要使用钢笔工具来创建描边效果的矢量文件。当然如果你仅仅是对怎么实现描边的动画效果感兴趣,可以跳过这一步。
命名图层
在设计图形的时候,要养成良好的图层命名习惯,尤其是要导出SVG文件的时候更应如此。如果不对图层命好命,那么导出来的SVG文件会异常复杂难以辨认,所以为了后面开发方便,还是好好的对图层命好命吧。图层的名字保持简洁容易理解就可以了。对于嵌套的子图层也要命好名,如下图所示:
导出
设计好图形后,就可以使用Illustrator来导出为SVG文件了,在导出文件前需要对图形进行一些设置,相关的设置可以去看看我以前写一篇文章,这里就不再阐述了。
输出SVG文件
再一次提醒在输出SVG文件前,记得把图层命好名。上面的图像导出SVG后,使用代码编辑器工具打开SVG文件:
看到代码里的ID了么?通过ID我们就可以清楚的知道每条路径(patn)所对应的图形,这就是图层命名带来的好处。想象一下,如果你在导出前没有命好名,为了找到每条路径(path)所对应的图形那是怎样的一种痛苦。
优化
当然导出SVG后,还需要进一步优化和压缩SVG文件,一般使用像SVGO类似的工具就可以很好的对SVG文件进行优化。不过,像我们现在这样要直接来操纵SVG文件来编写动画效果,最好是不要以开始就对SVG文件进行优化。我们可以在边写完动画效果后再对它进行优化。
至于SVG文件的优化可以去看看这篇文章。
动起来
在开始实现路径(path)描边动画前,先要明白stroke-dasharray 和stroke-dashoffset这两个概念。
Stroke Dash Array
在SVG中也可以像CSS中那样指定边框为虚线要用到属性stroke-dasharray。stroke-dasharray属性的参数,是一组用逗号分割的数字组成的序列。需要注意的是,这里的数字必须用逗号分割,虽然也可以插入空格,但是数字之间必须用逗号分开。每一组数字,第一个用来表示实线,第二个用来表示空白。
如果只有一个数字5,则表示会先画5px实线,紧接着是5px空白,然后又是5px实线,从而形成虚线。
比如我有一条200px的线,我把stroke-dasharray的指定为200,它就表示先画200px实线,紧接着是200px空白,然后又是200px实线,从而形成虚线。
Stroke Dash Offset
stroke-dashoffset属性表示路径从开始位置的偏移量。比如在下面我定义了stroke-dasharray的值为5、10、30、10表示5px的虚线、10px的空白、30px的虚线、10px的空白,如此循环。然后,通过改变它的stroke-dashoffset的值来看看会发生什么:
从图片中可以看到,通过调整stroke-dashoffset的值,可以重新设置路径开始的位置。在上面的实例中,我设置stroke-dashoffset的值为15px,可以看到路径移动了15px的距离。
动态改变偏移值
我们把路径的stroke-dasharray和stroke-dashoffset都设置为200px的值,会发现什么也看不到了,因为路径的虚线和空白距离都是一样的,而stroke-dashoffset的值也是200px,即表示路径从开始的位置偏移了200px的值(记住路径的偏移是从左边的原点开始的),所以就看到一片空白。
如果使用CSS3的来动态改变路径的偏移值即从200px到0,就会看到路径就像是用笔慢慢画出来的。
冰淇淋描边动画效果
原理明白,下面正式开干了。
首先在Illustrator中得到相关路径的长度,可以在文档信息面板中得到路径的长度。
为了更好的来编写动画效果,需要给每一个路径赋予了一个类名,这样可以针对每一条路径来更加精细控制动画效果。
然后,使用上面说的stroke-dasharray 和stroke-dashoffset两个属性来实现描边动画效果。
一个帅气的路径描边动画效果就实现了。
看起来好像不错了,但是还有优化的空间。
进一步优化
通过改变一些路径的虚线的长度,可以达到加快路径绘制的动画效果。很好理解,同样在2s内绘制一个短的虚线肯定要比绘制一个长的虚线的要快,即移动小一点的偏移量要比大一点的偏移值在同样的时间内肯定是要快一点。配合动画的延迟执行即animation-delay可以使动画效果更有趣一点。
最终线上代码效果可以去这里看看demo。
最后要提醒一点的是:这种动画效果对于使用embedded方式来引入SVG的情形是不支持的。如果要使用这样的动画效果,最好是使用inline svg的方式来引入svg即直接把SVG文件代码写到html文件中。
友情提醒
下面来说说一些浏览器的支持情况。
Mircosoft Edge
最新的Mircosoft Edge浏览器是支持这种描边动画效果的,不过它要求使用有明确单位的值,比如stroke-dasharray的值就必须为200px。
Internet Explorer
不幸的的是,Internet Explorer浏览器不支持在CSS中使用动画来控制stroke-dashoffset的值。
如果你一定要在IE上也实现描边动画效果,可以借助下面两种javascript方法来实现:
解决方法2是使用一个javascript的库来实现,vivus。
python animation path_帅气的SVG路径描边动画 (path animation) 实战应用相关推荐
- 纯CSS实现帅气的SVG路径描边动画效果
一.应该人人皆会的基础技术 简而言之,就是让SVG的描边像是有人绘制一样的动画效果. 国外很多相关介绍的文章,来看看一些效果gif吧~ 纯CSS实现帅气的SVG路径描边动画效果 纯CSS实现帅气的SV ...
- css图像描边,纯CSS实现帅气的SVG路径描边动画效果
一.应该人人皆会的基础技术 简而言之,就是让SVG的描边像是有人绘制一样的动画效果. 国外很多相关介绍的文章,来看看一些效果gif吧~ 我至少看到了4篇外文对此技术介绍(参见文末参考文章),觉得挺有意 ...
- SVG路径描边动画效果的实现
SVG路径描边动画效果 理解SVG坐标系和变换:视窗,viewBox和preserveAspectRatio部分 参考自: http://www.w3cplus.com/html5/svg-coord ...
- 使用snap.svg实现svg路径描边动画
使用snap.svg实现svg路径描边动画 一,snap.svg插件 在近几天,突然接到一个需求,内容是要在网页上写一个路径的动画,还需要可以随意控制动画的速度,开始于结束,本来是一个图片可以解决的问 ...
- SVG路径描边动画效果
一.效果 简而言之,就是让SVG的描边像是有人绘制一样的动画效果. 三.必知的基础知识 SVG中有个比较重要的属性分支,stroke :"描边". 1,stroke 描边颜色 no ...
- 纯CSS实现SVG路径描边动画效果
SVG中有一个比较重要度属性,stroke.stroke有很多兄弟属性: 1)stroke:线的颜色: 2)stroke-width:线的宽度: 3)stroke-linecap:线的端点,可用值有b ...
- SVG——入门,路径描边动画
之前写过一篇通过路径的锚点改变实现图形变化的动画SVG--入门,路径变形动画,今天这一篇的demo是简易的类似进度条之类的图形,核心原理通过改变路径的stroke-dasharray属性,路径的虚线描 ...
- SVG描边动画实现过程
准备工具:Adobe AI+PS 1.确定SVG画布的大小,在PS中切出需要描边效果的区域,以此区域的大小做为SVG容器的大小. 2.将PS中切好的图片直接拖拽到AI中 3.使用AI中的钢笔工具勾勒出 ...
- anime.js 实战:实现一个带有描边动画效果的复选框...
在网页或者是APP的开发中,动画运用得当可以起到锦上添花的作用.正确使用动画,不但可以有助于用户理解交互的作用,还可以大大提高网页应用的魅力和使用体验.并且在现在的网页开发中,动画已经成为了一个设计的 ...
最新文章
- 实验0 了解和熟悉操作系统
- hdu3966 树链剖分点权模板+线段树区间更新/树状数组区间更新单点查询
- 图解VC++2012编译安装GDAL1.11.0和入门例子
- 数据产品经理从零到一:数据产品能力模型构建
- mysql isam参数优化_MySQL MyISAM优化设置点滴
- JNI学习积累之一 ---- 常用函数大全
- CF 839 E-最大团
- pytorch gather_Pytorch 单机并行训练
- mysql 分组 列转行_MySQL数据库的分组操作,语句拼接,列转行操作
- 苏州计算机应用能力中级办公自动化,苏州市计算机应用能力考核(中级-办公自动化)新系统使用..doc_人人文库网...
- 第7课用计算机写作文优质课例,有趣的电脑课作文9篇
- Fiori学习:WEBIDE本地个人版安装
- CorelDRAW2023新增了哪些功能?
- Mathorcup数学建模竞赛第六届-【妈妈杯】B题:车位分布的优化设计与评价(附一等奖获奖论文和matlab代码)
- Java 8除不尽的数
- 前端HTML5视频_HTML5核心-张晓飞-专题视频课程
- 北大之后又一高校团队区块链大赛夺冠,原来高校才是行业真扫地僧,怕了吗? | 人物志...
- 《err keytool 错误: java.io.IOException: Keystore was tampered with, or password was incorrect》
- ftp工具下载,推荐5个流行的ftp工具下载软件
- Python10行代码制作企业内网IP地址查询网站