以此前对svg的了解,就是通过rect/circle/line……等绘制规则图形,或者利用path路径来绘制更复杂的图形。但是这种绘制是,当我们写好svg的xml文件嵌入html代码,页面载入的时候,图形是已经绘制完成了的。

例:上面的代码在页面绘制了一个半径为40的圆

那么如何能够让svg的绘制是动态的呢?也就是我们如何能够让svg的绘制过程一点点的出现,而不是刷新页面图形就已经渲染出来。于是,翻开许久没看的svg文档查看,但是纵览文档几遍,还是没有发现svg存在这样的属性或者方法提供。于是查资料,最后发现svg有个比较重要的属性,名为stroke, 中文软件中称之为“描边”。如上图circle的

strock 属性-->描边颜色;

strock-width 属性-->描边宽度;

等等很多属性,不一一列举,因为今天我们要实现动态绘制的关键属性是:

stroke-dasharray-->表示虚线描边;

stroke-dashoffset-->表示虚线的起始偏移;

例:代码和效果如图所示

如图绘制了一个半径100的圆,然后通过stroke-dasharray属性让圆成为了50px一段的虚线,而stroke-dashoffset则表示虚线的便宜位置。由此我们就可以想象:当我们把stroke-dasharray设置到足够大,大到比我们绘制的圆的周长还大时,会发生什么呢?那其实绘制的还是一个完整的圆。由此,我们可以通过animation来动态的改变stroke-dashoffset的偏移位置时,这个圆不就动起来了么?that‘s it !

html

css

如此,我们通过class将stroke跟css属性animation结合起来了,通过控制stroke-dashoffset的偏移位置的改变来实现动态的绘制图形的效果。事实上,这种手法实现了svg的动态绘制“效果”,但我们必须明白的是:这并不是表明svg是我们眼之所见绘制逐渐绘制出来的图形;而是,svg绘制方式本身没有改变,一如前文所言当页面加载的时候就已经完成了绘制,我们所见的动态绘制效果是通过图形虚线段和偏移来实现的svg图形的动画。上图css代码中,animation:dash 5s linear infinite;  infinite会让stroke的偏移位置动画一直执行,视觉效果上也就是圆圈一直在被绘制。如果去掉infinite,动画会在第一次绘制之后停止,圆圈也会消失。圆圈消失是因为动画结束后stroke-dashoffset的值会回到1000,偏移位置大于circle的周长,所以circle看不见了,并不是circle不显示了,这点需要注意。

如果想要动画绘制完成之后保持绘制状态,很简单,只需要把animation中的infinite替换成forwards,这样当圆圈绘制完毕,动画会一直保持着绘制结束时的状态。于是,我们要的动态绘制效果便达成了!

例:动态绘制图形并保持结束状态

css svg做动图,用svg动态绘制图形相关推荐

  1. css svg做动图,用SVG制作酷炫动态图标的方法

    用SVG制作酷炫动态图标的方法 发布时间:2020-09-14 14:56:39 来源:亿速云 阅读:160 作者:小新 用SVG制作酷炫动态图标的方法?这个问题可能是我们日常学习或工作经常见到的.希 ...

  2. 如何使用python做图_如何使用python做动图

    python可以做动图吗 ImageMagick 是一套功能强大.稳定而且开源的工具集和开发包,可以用来读.写和处理超过200种基本格式的图片文件,包括PNG,JPEG,GIF,HEIC,TIFF,D ...

  3. python怎么变成动图_python可以做动图吗

    ImageMagick 是一套功能强大.稳定而且开源的工具集和开发包,可以用来读.写和处理超过200种基本格式的图片文件,包括PNG,JPEG,GIF,HEIC,TIFF,DPX,EXR,WebP,P ...

  4. Matplotlib做动图(基础版)

    今天来用Matplotlib做动图玩玩,怎么让静图变为动图呢?我们现在的看到的电影.电视剧一般是24帧的,也就是每秒24幅图.用Matplotlib做动图也是这个原理用一定数量的静图在一定的时间内播放 ...

  5. R语言gganimate包创建可视化gif动图、可视化动图:创建动态散点图动画基于transition_time函数、使用shadow_wake函数配置动画的渐变效果(gradual falloff)

    R语言gganimate包创建可视化gif动图.可视化动图:创建动态散点图动画基于transition_time函数.使用shadow_wake函数配置动画的渐变效果(gradual falloff) ...

  6. GIPHY CAPTURE如何做动图?gif制作器的使用方法?

    gif 动图制作哪个好?今天小编给大家推荐一款Mac上制作gif图的工具-- GIPHY CAPTURE.GIPHY CAPTURE是专为Mac用户准备的一款非常简单的GIF制作器,只需单击" ...

  7. Python实践:画个动图玩玩,Python绘制GIF图总结

    Python实践:画个动图玩玩,Python绘制GIF图总结 文章目录 Python实践:画个动图玩玩,Python绘制GIF图总结 具体实现 Python代码 参考资料 上期博客< Pytho ...

  8. esri-leaflet入门教程(5)- 动态绘制图形

    esri-leaflet入门教程(5)- 动态绘制图形 by 李远祥 在上一章节中已经说明了esr-leaflet是如何加载ArcGIS Server提供的各种服务,这些都是服务本身来决定的,API脚 ...

  9. Leaflet学习之路五——动态绘制图形(点、线、圆、多边形)

    leaflet动态绘制图形 动态绘点 动态绘线 动态绘多边形 动态绘制矩形 2020.3.16更新 更新日志: 2019.1.14:更新了绘制多边形时tmpline没有移除的问题 2019.1.15: ...

最新文章

  1. C++中 何时用. 何时用-」
  2. 3G时代需要“移动云计算专业”
  3. Xilinx Axi Dma Userspace模式下 寄存器 +MMAP 测试程序
  4. secureCRT自动断开的解决方法
  5. Android 四大组件之——Acitivity(四) Activity是如何加载显示内容的?
  6. 【AI初识境】被Hinton,DeepMind和斯坦福嫌弃的池化,到底是什么?​​​​​​​
  7. Nginx的http块MIME-Type的使用
  8. Python里面对于嵌套列表的查询
  9. php csv 类,php csv操作类代码 - trim
  10. <table/>默认适应内容宽度造成滚动条不显示的解决方法
  11. 年终总结-致敬2014
  12. 【LeetCode】【HOT】208. 实现 Trie (前缀树)
  13. Model-free强化学习
  14. Python 实例教程100例
  15. 伪C++开发小游戏---连连看
  16. Python 中 'unicodeescape' codec can't decode bytes in position XXX: trun错误解决方案
  17. php copy函数 失败,wamp中的copy函数bug
  18. 献给那些没有自信的人。
  19. 1024程序员节 技术对抗赛 算法与安全答题 标准答案
  20. 算法面试必备-----数据分析常见面试题

热门文章

  1. AWS KMS加密和解密
  2. 各纬度气候分布图_气候气压带图_世界气候气压带风带分布图要图(需要表识纬度)-4d影院专题信息栏目...
  3. 一叶知秋:“安全“的野指针、 static函数、成员函数、this 指针、gcc编译器、name mangling...
  4. 电子书各种格式的转换常见问题
  5. delta对冲策略_期权的Delta对冲策略对比分析
  6. Dubbo Admin 发布 v0.1;VMware 或与微软放下恩怨展开合作
  7. MWeb for Mac 3.2.0 专业级的markdown编辑器
  8. 体检预约系统项目总结
  9. c#代码串口服务器的无线连接,C# 通过串口读取和发送数据
  10. Mac 开发者常用的工具