使用snap.svg实现svg路径描边动画

一,snap.svg插件

在近几天,突然接到一个需求,内容是要在网页上写一个路径的动画,还需要可以随意控制动画的速度,开始于结束,本来是一个图片可以解决的问题,结果就这样变难了呀,在网上查一会之后,突然就发现了svg,他有两个神奇属性stroke-dasharray(控制虚线和空白大小)和stroke-dashoffset(控制虚线偏移),通过改变stroke-dashoffset便可以轻松实现路径动画。
路径是这样滴

一开始没有注意后边路径上的阴影,我写到阴影时候才发现,svg的阴影竟然是用矩阵写的,唉,谁教咱不会写呢。只能放弃原生了呀。于是乎,我找到了adobe公司的Snap.svg。这个插件真是不错,简化了不少svg动画和生成的代码操作。不说了,上代码。

二,代码块

html
<!--属性preserveAspectRatio和viewBox是控制缩放的,以为屏幕不同所以我选择不按照比例缩放适应不同屏幕-->
<svg id="svgs" width="100%" height="100%" preserveAspectRatio="none" viewBox="0,0,800,300"></svg>
<button id="btn">开始运行</button>
<!--引用-->
<script src="js/jquery-1.9.0.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/snap.svg.js" type="text/javascript" charset="utf-8"></script>
js1生成svgvar svg = Snap("#svgs");var $svg=$('#svgs');//运行代码的时候发现filter也有width和height属性,源码中获取的是父级的offsetheight和offsetwidth,但是父级offsetheight和offsetwidth是空,没办法,只好手动添加了svg.paper.node.offsetHeight=$svg.height();svg.paper.node.offsetWidth=$svg.width();//不用矩阵定义过滤器颜色真是nicevar f = svg.paper.filter(Snap.filter.shadow(0, 0, 3,'#5294d6'));var p1 = svg.paper.path("M179 209L128 217L375 221L208 291L437 295L447 272").attr({stroke: "#ffffff",strokeWidth: 2,fill:'none',strokeLinejoin:'round',strokeLinecap:'round',filter: f});
js2控制运动var $path=$('path');var $btn=$('#btn');//经过我的测试,发现除了谷歌和欧鹏之外的浏览器好像都不支持除path元素使用getTotalLength,为了兼容,只好用path了var len = p1.getTotalLength();$path.css('strokeDasharray',len);$path.css('strokeDashoffset',len);$btn.on('click',function(){$path.stop();$path.css('strokeDashoffset',len);$path.animate({strokeDashoffset:0},6000);})

三,题外话

1.特别感谢鑫神写的中文api,有兴趣的可以去学一下 [ 中文api ]。
2.这个效果本来是朋友做的网页上需要的,但是,写完之后朋友却说需要兼容到ie8,那就算了,本效果只兼容到ie9。
3.某个说我写的不能用的某人,请不要看,看你是小狗哟
4.本人初涉江湖,欢迎切磋指正。

使用snap.svg实现svg路径描边动画相关推荐

  1. SVG——入门,路径描边动画

    之前写过一篇通过路径的锚点改变实现图形变化的动画SVG--入门,路径变形动画,今天这一篇的demo是简易的类似进度条之类的图形,核心原理通过改变路径的stroke-dasharray属性,路径的虚线描 ...

  2. 纯CSS实现帅气的SVG路径描边动画效果

    一.应该人人皆会的基础技术 简而言之,就是让SVG的描边像是有人绘制一样的动画效果. 国外很多相关介绍的文章,来看看一些效果gif吧~ 纯CSS实现帅气的SVG路径描边动画效果 纯CSS实现帅气的SV ...

  3. python animation path_帅气的SVG路径描边动画 (path animation) 实战应用

    这是我的一个关于SVG的应用的技术分享网站svgtrick.com,会同步一些文章到这里来,更多关于SVG技术应用可以去网站看看. 要是觉得文章还不错的话,可以多多推荐哦. 今天这篇文章来聊聊SVG路 ...

  4. SVG路径描边动画效果的实现

    SVG路径描边动画效果 理解SVG坐标系和变换:视窗,viewBox和preserveAspectRatio部分 参考自: http://www.w3cplus.com/html5/svg-coord ...

  5. SVG——入门,路径变形动画

    刚学了两天svg基础,随手记个笔记,通过改变svg锚点路径创作动画效果,今天的demo是一个播放和暂停的按钮 动画的原理,无论是帧动画,还是位移动画,无非就是将一个图形从a状态转变为b状态的一个过程 ...

  6. css图像描边,纯CSS实现帅气的SVG路径描边动画效果

    一.应该人人皆会的基础技术 简而言之,就是让SVG的描边像是有人绘制一样的动画效果. 国外很多相关介绍的文章,来看看一些效果gif吧~ 我至少看到了4篇外文对此技术介绍(参见文末参考文章),觉得挺有意 ...

  7. SVG—初识4之描边动画和路径动画

    SVG-初识4 SVG描边动画 stroke-dashoffset DrawSVGPlugin插件 路径动画 CSS写路径动画 SVG写路径动画 使用 GreenSock 来实现自行车沿着路径运动的路 ...

  8. SVG路径描边动画效果

    一.效果 简而言之,就是让SVG的描边像是有人绘制一样的动画效果. 三.必知的基础知识 SVG中有个比较重要的属性分支,stroke :"描边". 1,stroke 描边颜色 no ...

  9. 纯CSS实现SVG路径描边动画效果

    SVG中有一个比较重要度属性,stroke.stroke有很多兄弟属性: 1)stroke:线的颜色: 2)stroke-width:线的宽度: 3)stroke-linecap:线的端点,可用值有b ...

最新文章

  1. 四川第七届 I Travel(bfs)
  2. 【组队学习】【34期】Scratch(二级)
  3. 20145223 《信息安全系统设计基础》课程总结
  4. 人工智能实践:TensorFlow笔记学习(四)—— 神经网络优化
  5. 【转】grep搜索子目录中包含某字符串的特定文件
  6. [翻译] Shimmer
  7. jQuery 7 节点遍历
  8. java h5在线音频_[语音技术]java+H5的录音类实例(1)
  9. c语言输入的成绩由高到低该怎么,输入成绩,按照平均分从高到低输出
  10. LeetCode 769. 最多能完成排序的块
  11. java 免费cms_开源 免费 java CMS
  12. 前端基础-html-水平线标签
  13. C++socket编程(八)8.3:UDP广播
  14. 不来看看这些 VUE 的生命周期钩子函数? | 原力计划
  15. 关于多媒体编解码器和音视频格式
  16. 罗技F310与F710游戏手柄驱动(附C++源码)
  17. windows11鼠标滚轮反向
  18. Mybatis CRUD操作和多表查询
  19. 小凯的疑惑(Noip 提高组 2017 d1 1)+[USACO4.1]麦香牛块Beef McNuggets
  20. Cannot determine path to ‘tools.jar‘ library for 1.8 (C:/Program Files/Java/jdk-18)

热门文章

  1. Python3 去掉json中带的注释
  2. html表格设计(分列,设置边框)
  3. Unity Sqlite的使用与简单封装
  4. html手机运行卡,处理器or运行内存,谁是手机卡顿的罪魁祸首?
  5. 【最短路算法】dijkstra,SPFA和folyd
  6. 平移不变性/平移同变性
  7. gitee的注册使用,git下载,TortoiseGit下载安装
  8. OSChina 周三乱弹 —— 很认真的假装在工作
  9. Java计算素数算法优化以及拓展
  10. 前端基础知识--顶置