相信大家都见到过这样神奇的技术:一副线条构成的画能自动画出自己。非常的酷。Jake Archibald是这种SVG技术的首创者,并且写了一篇非常好的文章来描述它是如何实现的。Brian Suda也在24 Ways网站上讨论过它。 Polygon使用它在一篇设计方面的文章里创造出了非常神奇的效果。Codrops也做出了一些非常漂亮的例子。

其实我没有什么好增补的,只是想把这种技术说的更明白些,所以,在这里我要用我的方式把这种技术再讲解一遍。

1. 你有一个SVG图形

2. 这个图形必须要有一个线条(stroke)属性

3. 线条可以是虚线

我们可以用Illustrator制作,也可以用编程实现。我们用CSS来设置这些路径的样式(假定我们这里是inline SVG,或通过一个),把它们变成虚线形式。

.path {

stroke-dasharray: 20;

}

这是让虚线里的每个小线段长度为20px。

4. 可以让虚线小段的长度变得更长….

.path {

stroke-dasharray: 100;

}

5. 我们还可以给我们的线条设置”offset”偏移量,这样会导致虚线里的小线段的位置发生移动。

当我们动态设置图形中线条的“offset”值时,可以看到这个效果:

可以这样简单的实现:

.path {

stroke-dasharray: 100;

animation: dash 5s linear;

}

@keyframes dash {

to {

stroke-dashoffset: 1000;

}

}

6. 想象,当虚线的小线条足够长,超过图形的整个线条长度时

没有什么变化,整个图像看起来完全不是虚线。你只需要将stroke-dasharray属性设置的足够长,超过整个线条的长度。

7. 现在给线条设置偏移量,让它不再覆盖整个图形。

这样你就看不见图形了。

8. 现在动态的慢慢将线条的偏移量设置回归到0

如果通过CSS,你需要将animation属性设置成forwards,这样整个动画就会停止在它的最终状态。

.path {

stroke-dasharray: 1000;

stroke-dashoffset: 1000;

animation: dash 5s linear forwards;

}

@keyframes dash {

to {

stroke-dashoffset: 0;

}

}

Tada!

实例演示

See the Pen bGyoz by Chris Coyier (@chriscoyier) on CodePen.

为什么要用JavaScript?

大部分你看到的SVG线条动画都使用了JavaScript。这是因为在现实情况中你很难知道线条有多长。我们这里设置的是1000,是因为它碰巧是1000。

用JavaScript获取长度值的写法是这样的:

var path = document.querySelector('.path');

var length = path.getTotalLength();

然后你就可以随便使用这个值了。文本顶部链接的那些文章讲的都比本文透彻,你最好还是参考一下那些文章。我只想简单的讲一下这种技术方法,希望它能给你一些启示。

android svg 线条动画教程,SVG技术入门:线条动画实现原理相关推荐

  1. 【UnityDragonBones】像素角色人物骨骼动画教程(三)骨骼动画人物奔跑起来

    [手机游戏像素画美术教程]跟Tsugumo学像素画系列-奔跑动画序列(完结) [手机游戏像素画美术教程]跟Tsugumo学像素画系列-让光照进来 [手机游戏像素画美术教程]跟Tsugumo学像素画系列 ...

  2. 区块链技术入门——核心概念与原理

    区块链的前世今生 密码朋克(Cypherpunk):是一个邮件组,里面有许多大牛. 比特币的底层技术: 点对点网络 时间戳 加密技术 工作量证明 可以应用到其他领域. 将这些技术提炼出来,就提出了区块 ...

  3. android svg 线条动画教程,SVG之旅:SVG线条动画实现原理

    对于SVG路径动画,我相信大家都看到过这样的动效:一条线就像它自己画自己.非常的酷.@Jake Archibald是这项技巧的先驱,他在自己的博客写了一篇非常好的文章来介绍SVG的线条动画是如何实现的 ...

  4. android ui组件开发教程,安卓开发入门教程-UI控件_Switch

    什么是Switch Switch是一种用于显示开关状态的UI控件. 基础样例 1.普通开关 效果图 代码 android:layout_width="wrap_content" a ...

  5. html5二维动画教程,H5+JS二维动画制作的一个实例

    今天介绍一个网络上并不常用的插件two.js,刚开始学习的过程中,发现网上并没有合适的教程,在此发表基本操作 two.js是一款网页二维绘图软件,可以在指定区域内产生自设的各种动画效果 下载网址如下: ...

  6. 大量电气自动化专业的Flash动画教程开始上架,你期待吗?

    http://pan.baidu.com/s/1dD6f4PF 电路分析Flash动画教程 1天搞定模电数电FLASH课件视频教程 39个动画精美讲解 初学者必备 电力电子技术Flash动画教程 液压 ...

  7. android 动态生成直线,Android SVG技术入门:线条动画实现原理

    SVG技术入门:线条动画实现原理 这是一个有点神奇的技术:一副线条构成的画能自动画出自己,非常的酷.SVG 意为可缩放矢量图形(Scalable Vector Graphics),是使用 XML 来描 ...

  8. android svg 线条动画教程,简单的SVG线条动画

    [TOC] 看到网页中那种有如写字般的动画,觉得挺好玩的,就找了下制作方法,也比较简单,在此记录一下; 先上几张图看看: 简单的线条动画 ps4 用到的属性 stroke 定义边框颜色值; strok ...

  9. 【Web动画】SVG 实现复杂线条动画

    在上一篇文章中,我们初步实现了一些利用基本图形就能完成的线条动画: [Web动画]SVG 线条动画入门 当然,事物都是朝着熵增焓减的方向发展的,复杂线条也肯定比有序线条要多. 很多时候,我们无法人工去 ...

  10. SVG实例入门与动画实战

    前言 在日常开发过程中,我们或多或少都接触过SVG,有可能是用它来画一些简单的图形,有可能是使用它来构建工程的字体文件库,甚至是用它来绘制一些复杂的可视化模块.本文会详细介绍SVG的基本图形以及常见的 ...

最新文章

  1. 使用Vuforia Unity构建增强现实应用
  2. 极客新闻——13、美团到餐研发团队资源成本优化实践
  3. healpy的安装(包括healpix)
  4. mp4转gif_mp4转gif怎么转?一键转码的技巧要知道
  5. 企业新站上线应注意的几个问题
  6. 【Flutter】Flutter 布局组件 ( Wrap 组件 | Expanded 组件 )
  7. 开源是互联网发展的核动力
  8. 【攻防世界009】流浪者
  9. ISP、主机之间的通信方式、电路交换和分组交换、时延
  10. windows版本的clion软件除了使用wsl配置Ubuntu子系统外,还可以使用MinGW-w64来配置gcc和g++
  11. Python技巧——list comprehension 与 functools.reduce
  12. 传输层协议(6):TCP 连接(下-3)
  13. React Web开发中常见的异常提示以及解决方案
  14. 最短路径spfa算法
  15. 第三章:使用HiTool下载程序
  16. 开机出现RUNDLL加载:C:WINDOWS\downlo~1\Cnsmin.dll时…
  17. 揭开MySQL数据库的神秘面纱!
  18. UI界面设计相关知识(一)
  19. 学好编程需要英语很好吗
  20. 关于redis 小白从入门到大神

热门文章

  1. 代码传奇 张一鸣的成长之路
  2. 服务器封包协议号,DHCP协议的租约确认和封包格式
  3. Atitit q2016 q0 doc list on home ntpc.docx
  4. 均匀分布的期望和方差的推导_均匀分布的期望和方差(D(X)与E(X)公式)
  5. c语言基础知识怎么记,c语言基础学习-学C语言要熟记那些基本语句? 爱问知识人...
  6. 蓝牙linux驱动源代码,基于Linux蓝牙无线模块USB驱动程序开发.pdf
  7. 鸿蒙系统桌面壁纸,华为鸿蒙桌面怎么设置好看
  8. MySQL高级SQL语句(二)
  9. 江苏省高等数学竞赛经验分享
  10. 记录自己的鬼压床——长发