百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

SVG路径动画解密

myzbx 2025-04-29 02:36 35 浏览

SVG路径动画效果现在貌似越来越多网站都使用了,给我的感觉就像是一段时间的流行而已,刚一出来大家都感觉很炫酷,时间久了也就审美疲劳啦!如果还不知道什么是SVG路径动画的童鞋,快来看一个demo吧:
http://tympanus.net/Development/SVGDrawingAnimation/

课程库相关课程: 常用的三种生成SVG图形动画方式

怎么样?是不是很炫酷!另外这种技术还可以实现将logo外径作为loading的进度环,比如现在的天猫app里的加载进度条。想知道这是怎么实现的吗,我也是前些天略微研究了一下,在此分享出来吧!

要做出一个这样的特效首先有几个关键点:

  1. 核心技术:SVG路径图+SVG样式(stroke-dasharray和stroke-dashoffset),stroke-dasharray用于创建虚线,也就是把svg图用虚线来画,这个属性可以是一个数组,数组里面的值就是虚线的值,依次循环。详情:
    http://www.w3cschool.cc/svg/svg-stroke.html,而stroke-dashoffset顾名思义就是虚线在原路径上的相对偏移量了。

  2. 开发前准备:将png图在ai中打开,利用钢笔工具描边,画出描边的路径并另存为SVG矢量图,这就是要html中要用的路径了(大神如果可以在html中直接用path画出想要的路径可以直接画!)

  3. 实现原理:利用css3的animation动画特效来控制stroke-dasharray和stroke-dashoffset值的改变,以达到路径动画的效果

是不是恍然大悟了,看上去很简单的样子吧!这里来个本站的代码分享: demo传送门

现在详细说明一下demo,这个demo中最下面那个不规则形状

就是我用illustrator钢笔随手画的一个闭合路径,然后另存为.svg文件,打开后将<svg>代码部分考到html中,并稍微改动一下成为

  1. <svg width="400px" height="400px">

  2. <path id="test" fill="none" stroke="#fff" stroke-width="3" d="M197,218c0,0-112,31-23,77s95,82,110,16s246.28,104,13.64-69S108,130.477,197,218z"/>

  3. <path fill="none" stroke="#fff" stroke-width="3" d="M197,218c0,0-112,31-23,77s95,82,110,16s246.28,104,13.64-69S108,130.477,197,218z" opacity="0.05"/>

  4. </svg>

这个样子,svg内的两个path是完全相同的,第一个是用来描边的,第二个是一个背景路径而已,可以根据需求选择性删掉。

CSS部分是重点:

  1. #test {

  2. stroke-dasharray: 0,852.45;/*表示虚线描边。数组是虚线数组。详解:
    http://www.w3cschool.cc/svg/svg-stroke.html。[0,图路径长]*/

  3. stroke-dashoffset: 0;/*表示虚线的起始偏移*/

  4. -webkit-animation: polanim 3s linear infinite ;

  5. -webkit-animation-fill-mode:both ;

  6. }

  7. @-webkit-keyframes polanim {

  8. 0% {

  9. stroke-dasharray: 0, 852.45;

  10. stroke-dashoffset:0;

  11. }

  12. 50% {

  13. stroke-dasharray: 852.45, 0;

  14. stroke-dashoffset:0;

  15. }

  16. 100% {

  17. stroke-dasharray: 0, 852.45;

  18. stroke-dashoffset:-852.45;

  19. }

  20. }

给需要描边的那个path定义一个id(class也行),然后在css中定义了stroke-dasharray、 stroke-dashoffset这两个关键点,唯一疑惑的就是那个stroke-dasharray: 0,852.45;的那个852.45了吧,这个值就是整个路径的长度。前50%的动画通过animation来动态改变stroke-dasharray的值,就好像一个路径上的虚线的实部分从短到长,而虚部分从长到短从而达到了路径动画的效果,后50%的动画是想让路径画完后,再按照路径消失一圈,这里用到了stroke-dasharray和stroke-dashoffset的同时改变,也就是虚线的实部分从长到短的同时再改变虚线的偏移量,把实部分往回拉。如果实在想不通的话就反复试着改这几个参数值来看看各是什么效果好啦。

哦 对了,整个路径的长度852.45可以用js提前计算出来,代码是:

  1. var path = document.getElementById('test');

  2. var length = path.getTotalLength;

  3. console.log(length)

在css动画设置中设置不同的百分比时间和不规则的stroke-dasharray\stroke-dashoffset就可以像demo中那个logo似的达到不那么死板的效果

点击阅读原文获得更多精彩内容

相关推荐

如何设计一个优秀的电子商务产品详情页

加入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品电子商务网站的产品详情页面无疑是设计师和开发人员关注的最重要的网页之一。产品详情页面是客户作出“加入购物车”决定的页面...

怎么在JS中使用Ajax进行异步请求?

大家好,今天我来分享一项JavaScript的实战技巧,即如何在JS中使用Ajax进行异步请求,让你的网页速度瞬间提升。Ajax是一种在不刷新整个网页的情况下与服务器进行数据交互的技术,可以实现异步加...

中小企业如何组建,管理团队_中小企业应当如何开展组织结构设计变革

前言写了太多关于产品的东西觉得应该换换口味.从码农到架构师,从前端到平面再到UI、UE,最后走向了产品这条不归路,其实以前一直再给你们讲.产品经理跟项目经理区别没有特别大,两个岗位之间有很...

前端监控 SDK 开发分享_前端监控系统 开源

一、前言随着前端的发展和被重视,慢慢的行业内对于前端监控系统的重视程度也在增加。这里不对为什么需要监控再做解释。那我们先直接说说需求。对于中小型公司来说,可以直接使用三方的监控,比如自己搭建一套免费的...

Ajax 会被 fetch 取代吗?Axios 怎么办?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!今天给大家带来的主题是ajax、fetch...

前端面试题《AJAX》_前端面试ajax考点汇总

1.什么是ajax?ajax作用是什么?AJAX=异步JavaScript和XML。AJAX是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实...

Ajax 详细介绍_ajax

1、ajax是什么?asynchronousjavascriptandxml:异步的javascript和xml。ajax是用来改善用户体验的一种技术,其本质是利用浏览器内置的一个特殊的...

6款可替代dreamweaver的工具_替代powerdesigner的工具

dreamweaver对一个web前端工作者来说,再熟悉不过了,像我07年接触web前端开发就是用的dreamweaver,一直用到现在,身边的朋友有跟我推荐过各种更好用的可替代dreamweaver...

我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊

接下来你看到的将是全网最详细的Java知识点总结,全文分为三大部分:Java基础、Java框架、Java+云数据小编将为大家仔细讲解每大部分里面的详细知识点,别眨眼,从小白到大佬、零基础到精通,你绝...

福斯《死侍》发布新剧照 &quot;小贱贱&quot;韦德被改造前造型曝光

时光网讯福斯出品的科幻片《死侍》今天发布新剧照,其中一张是较为罕见的死侍在被改造之前的剧照,其余两张剧照都是死侍在执行任务中的状态。据外媒推测,片方此时发布剧照,预计是为了给不久之后影片发布首款正式预...

2021年超详细的java学习路线总结—纯干货分享

本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。纯干货,良心推荐!第一阶段:Java基础重点知识点:数据类型、核心语法、面向对象...

不用海淘,真黑五来到你身边:亚马逊15件热卖爆款推荐!

Fujifilm富士instaxMini8小黄人拍立得相机(黄色/蓝色)扫二维码进入购物页面黑五是入手一个轻巧可爱的拍立得相机的好时机,此款是mini8的小黄人特别版,除了颜色涂装成小黄人...

2025 年 Python 爬虫四大前沿技术:从异步到 AI

作为互联网大厂的后端Python爬虫开发,你是否也曾遇到过这些痛点:面对海量目标URL,单线程爬虫爬取一周还没完成任务;动态渲染的SPA页面,requests库返回的全是空白代码;好不容易...

最贱超级英雄《死侍》来了!_死侍超燃

死侍Deadpool(2016)导演:蒂姆·米勒编剧:略特·里斯/保罗·沃尼克主演:瑞恩·雷诺兹/莫蕾娜·巴卡林/吉娜·卡拉诺/艾德·斯克林/T·J·米勒类型:动作/...

停止javascript的ajax请求,取消axios请求,取消reactfetch请求

一、Ajax原生里可以通过XMLHttpRequest对象上的abort方法来中断ajax。注意abort方法不能阻止向服务器发送请求,只能停止当前ajax请求。停止javascript的ajax请求...