stroke-dasharray

stroke-dasharray是做什么用的?先看下面代码

<svg><rect x="20" y="20" width="100" height="100" fill="none" stroke-width="1" stroke="red"> </rect>
</svg>

结果:

我们先看一下stroke属性的作用是什么.我们在上面使用rect标签画出一个矩形,起始点的x和y坐标都为20,宽和高都为100.stroke属性描述的是矩形边框的颜色,而stroke-width则定义了边框的宽度.

我们在此基础上添加一些代码看下效果:

<svg><rect x="20" y="20" width="100" height="100" fill="none" stroke-width="1" stroke="red" stroke-dasharray="10"></rect>
</svg>

当我们把stroke-dasharray设置为10的时候,可以看到实线变成了虚线.并且每一小份实线的长度和间隔都为10.

如果我们设置stroke-dasharray:10 20;则表示每一小份实线的长度为10,间隔为20.

如果我们把stroke-dasharray的值设置的足够大,比如等于这个矩形的周长400,既stroke-dasharray:400.

从上面的结果我们可以看出,此时矩形的每一小份实线的长度为400,间隔也为400时,边框描绘出来的图形就是一个实线的矩形.stroke-dasharray的作用也可以看出来就是对边框的展现形式做成虚线的处理,而每一小份实线的长度和之间的间隔则由具体的参数决定.

stroke-dashoffset

stroke-dashoffset属性通常与stroke-dasharray以及css相关属性配合使用可以做出小巧的动画.stroke-dashoffset的作用是什么呢?

我们还是看上面的矩形案例添加上stroke-dashoffset属性来观察效果.

<svg><rect stroke-dashoffset="0" x="20" y="20" width="100" height="100" fill="none" stroke-width="1" stroke="red" stroke-dasharray="400"></rect>
</svg>

当设置stroke-dashoffset为0,什么反应都没有.

当设置stroke-dashoffset:400时矩形直接消失了.

当设置stroke-dashoffset:300时矩形只剩下了一条边.

当设置stroke-dashoffset:800时,完整的矩形又神奇的出现了.

stroke-dashoffset这个属性是相对于起始点做偏移,正数x,相当于往左移动了x个长度.负数x,相当于往右移动了x个长度。不管是往哪一边偏移,dasharray都是循环的,遵循 短实线-间隔-短实线-间隔.因此我们总算知道了为什么stroke-dashoffset设置为400的时候会消失,因为矩形的周长等于400,刚好把这一小份的实线给偏移走了,而800又是一段新的实线。

那么也就是说我们可以通过设置stroke-dashoffset的值让边框显示的文络发生移动,如果再配合上css中的animation属性或者transition属性就可以做出很多精美的动画了.

线条增长动画

 <style>@keyframes animate2{0% {stroke-dashoffset: 320;}100% {stroke-dashoffset: 0;}}.line{animation: animate2 3s 0.9s linear both;}
</style><svg><line class="line" x1="30" y1="30" x2="300" y2="30" stroke-width="20" stroke="red" stroke-dasharray="300,320"/>
</svg>

结果:

利用stroke-dashoffset属性使线条线性增长

环形动画

<style>  .circle {animation: animate2 3s 0.9s linear both;stroke: #0084ff;stroke-width: 2px;fill: none;stroke-dasharray: 320;}@keyframes animate2{0% {stroke-dashoffset: 320;}100% {stroke-dashoffset: 0;}}
</style> <svg><circle class="circle" cx="51" cy="51" r="50">            </circle>
</svg>

path标签动画


<style>@keyframes animate1{0% {stroke-dashoffset: 564;}100% {stroke-dashoffset: 0;}}
.spiral{fill:none;animation: animate1 3s 0.9s linear both;stroke-dasharray: 564;}
</style><svg height="400" width="300"><path d="M153 334C153 334 151 334 151 334C151 339 153 344 156 344C164 344 171 339 171 334C171 322 164 314 156 314C142 314 131 322 131 334C131 350 142 364 156 364C175 364 191 350 191 334C191 311 175 294 156 294C131 294 111 311 111 334C111 361 131 384 156 384C186 384 211 361 211 334C211 300 186 274 156 274" stroke="red" stroke-width="1" class="spiral"/>
</svg>

svg里stroke相关属性在css动画中的应用相关推荐

  1. CSS动画中的贝塞尔曲线

    前言 最近在学习CSS动画,其中动画时间函数的部分涉及到了贝塞尔曲线的相关知识.对于这部分知识,之前一直没有好好学习过,正好借着这个机会学习下. 1. 贝塞尔曲线 首先简单介绍下贝塞尔曲线. 贝塞尔曲 ...

  2. 「译」有限状态机在 CSS 动画中的应用

    原文地址:css-animations-with-finite-state-machines 原文作者:David Khourshid 译文出自:阿里云翻译小组 译文链接:github.com/daw ...

  3. 在 CSS 动画中使用硬件加速(翻译)

    在最近一个项目中,因为初期没有做太好的规划与人员技术能力有限,在性能方面有很多问题,而我加入这个项目的主要任务就是进行各种性能优化.其中对于重排重绘以及硬件加速相关优化进行的比较多,这种优化方式成本比 ...

  4. css动画中文字慢慢显示,利用定时器和css3动画制作文字依次渐变显示的效果

    如上图,这种效果看着是不是挺"柔"的 附代码 文字一次渐变出现 body{ background-color: #333333; padding: 20px; -webkit-bo ...

  5. css 动画中 ease,seae-in,ease-in-out,ease-out,效果区别

    值 描述 linear 规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1)).(匀速) ease 规定慢速开始,然后变快,然后慢速结束的过渡效果(cubic-bezi ...

  6. css 动画中 ease,seae-in,ease-in-out,ease-out,解释

    值 描述 linear 规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1)).(匀速) ease 规定慢速开始,然后变快,然后慢速结束的过渡效果(cubic-bezi ...

  7. css动画和js动画比较!

    原文地址:http://css-tricks.com/myth-busting-css-animations-vs-javascript/ 译文地址:https://github.com/classi ...

  8. CSS动画之旋转魔方轮播

    下面我将一步一步详解如何利用纯CSS实现一个旋转魔方轮播的效果. 总的来说我们需要实现以下两个主要功能: 构建一个能够旋转的立方体 让立方体拥有基本轮播所具有的特性 但在完成以上两点之前我们需要再次了 ...

  9. web前端入门到实战:CSS动画之旋转魔方轮播

    下面我将一步一步详解如何利用纯CSS实现一个旋转魔方轮播的效果. 总的来说我们需要实现以下两个主要功能: 构建一个能够旋转的立方体 让立方体拥有基本轮播所具有的特性 但在完成以上两点之前我们需要再次了 ...

最新文章

  1. 使用Protobuf文件一键生成Java类
  2. nodejs -- promise的返回
  3. Flutter瘦身大作战
  4. 【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#manifestPlaceholders 清单文件占位符配置 )
  5. 解析导入表和IAT表
  6. [渝粤教育] 南京信息职业技术学院 电工电子技术基础 参考 资料
  7. 新生必会的linux命令,jstat命令详解
  8. AndroidStudio中Flutter打包APK
  9. python中文词云图代码_Python简单实现词云图代码及步骤解析
  10. 信号量CSemaphore的使用
  11. 硬盘的接口,总线,协议知识点总结
  12. armv6、armv7、armv7s、arm64分别对应什么?
  13. 深度置信网络(DBN)
  14. mysql sock golang_golang socket连接复用 - smux
  15. 使用微软官方工具制作Windows系统启动U盘
  16. HOG+ADABOOST方式训练头肩检测模型
  17. 【kubernetes】k8s使用客户端连接haproxy访问高可用集群流程详细说明【使用kubeconfig连接haproxy】【kubeconfig配置全部流程】
  18. 【iOS】关于keyWindow的获取
  19. 计算机基础作业1,学习平台-北京大学16春计算机基础与应用作业1答案-成人高等教育_成人本科教育报名_远程网络教育学院-江苏学历网报名服务中心...
  20. 简单方法解决火狐浏览器主页被篡改/挟持,主页变成垃圾网站的问题

热门文章

  1. [FreedomAI]第三周——InfluenceMap
  2. 2014年 delphi源码大全升级到31G
  3. 【元胞自动机】元胞自动机城市规划【含Matlab源码 125期】
  4. 正则表达式图文超详细总结不用死记硬背(上篇)
  5. bodymovin for Mac(AE动画导出json插件)
  6. ADS仿真,3db均衡器是否可以补偿3db插入损耗?
  7. ftp 服务器怎么创建文件夹权限,FTP服务器的权限设置
  8. EOS智能合约开发(十)EOS中eosio.token合约分析
  9. JavaWeb(分页)
  10. div 圆角div渐变色 渐变色循环换色