`
天梯梦
  • 浏览: 13763566 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

SVG技术入门:线条动画实现原理

 
阅读更多

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

 

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

 

1. 你有一个SVG图形

SVG技术入门:线条动画实现原理
SVG技术入门:线条动画实现原理

 

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

SVG技术入门:线条动画实现原理
SVG技术入门:线条动画实现原理

 

3. 线条可以是虚线

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

<svg ...>    <path class="path" stroke="#000000" ... >  </svg>

.path {
  stroke-dasharray: 20;
}

 

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

SVG技术入门:线条动画实现原理
SVG技术入门:线条动画实现原理

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

.path {
  stroke-dasharray: 100;
}
SVG技术入门:线条动画实现原理
SVG技术入门:线条动画实现原理

 

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

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

SVG技术入门:线条动画实现原理
SVG技术入门:线条动画实现原理

可以这样简单的实现:

.path {
  stroke-dasharray: 100;
  animation: dash 5s linear;
}

@keyframes dash {
  to {
    stroke-dashoffset: 1000;
  }
}

 

 

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

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

 

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

这样你就看不见图形了。

 

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

SVG技术入门:线条动画实现原理
SVG技术入门:线条动画实现原理

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

.path {
  stroke-dasharray: 1000;
  stroke-dashoffset: 1000;
  animation: dash 5s linear forwards;
}

@keyframes dash {
  to {
    stroke-dashoffset: 0;
  }
}

 

 

Tada!

 

为什么要用JavaScript?

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

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

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

 

 

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

(英文:How SVG Line Animation Works.)

 

原文:http://www.webhek.com/how-svg-line-animation-works

本文:SVG技术入门:线条动画实现原理

分享到:
评论

相关推荐

    svg经典入门书籍.pdf

    5. **SVG动画**:介绍`&lt;animate&gt;`元素和其他动画技术,以及如何实现时间线和交互式动画。 6. **SVG与HTML的集成**:讲解如何在HTML文档中嵌入SVG,以及如何利用JavaScript进行交互。 7. **SVG优化与性能**:讨论如何...

    SVG经典教程1 (SVG从入门到精通)

    这个“SVG经典教程1 (SVG从入门到精通)”上册,作为初级教程,旨在帮助读者快速掌握SVG的基本概念和实践技巧。 教程可能涵盖以下关键知识点: 1. SVG基础知识:解释SVG的定义,以及与位图(如JPEG或PNG)的区别。...

    SVG经典入门(SVG应用指南) 完整带目录

    2. 矢量图形:SVG图像由一系列基于矢量的图形组成,这些图形使用路径(path)、线条(line)、矩形(rect)、圆形(circle)、椭圆(ellipse)和多边形(polygon)等元素定义。矢量图形的最大优势在于能够无损地缩放...

    SVG经典教程2 (SVG从入门到精通)

    SVG通过`&lt;animate&gt;`、`&lt;animateTransform&gt;`等元素实现动画效果,结合JavaScript还可以实现更丰富的交互功能。 ### 11. 集成到HTML SVG可以通过内联方式直接嵌入HTML,也可以作为外部资源引用,利用`&lt;object&gt;`或`...

    使用CSS3实现SVG路径描边动画效果入门教程

    本教程将介绍如何利用CSS3实现SVG路径的描边动画效果,无需依赖JavaScript,完全使用CSS来完成。首先,我们要理解SVG中关于描边(stroke)的一些基本属性。 1. **描边颜色(stroke)**:这是SVG中最关键的属性之一...

    SVG经典入门

    CSS也可以用来控制SVG元素的样式,实现更精细的布局和动画效果。 在《SVG经典入门》这本书中,你可能会学到如何创建和修改SVG元素,理解SVG的基本语法,学习如何利用SVG进行图形设计,以及掌握SVG在网页和其他应用...

    svg.zip_qt svg_svg_svg qt_矢量图

    总的来说,这个压缩包可能是为了帮助初学者入门QT与SVG的结合使用,提供了一个简单的起点,让他们能够理解和实践这两个技术的集成。通过这个项目,学习者可以深入理解SVG的基本结构,以及如何利用QT的API来处理和...

    SVG学习资料,SVG相关软件汇总找资料

    4. **动画**:SVG支持通过SMIL(Synchronized Multimedia Integration Language)进行动画制作,也可结合JavaScript实现更复杂的交互效果。 5. **浏览器支持**:大部分现代浏览器都原生支持SVG,无需额外插件。 **...

    SVG 入门教程(一) 基本形状

    在这个SVG入门教程的第一部分,我们将探讨SVG的基本形状。 SVG图像由一系列几何形状构成,包括矩形、圆形、椭圆、线条、多边形和路径等。这些形状可以通过SVG的XML语法来定义。下面我们将逐一详细介绍这些基本形状...

    svg绘图资料

    这篇资料集包含了关于SVG绘图技术的详细描述,旨在帮助学习者从入门到精通,掌握SVG的各种绘图技巧和交互性应用。 SVG的基本元素包括形状(如矩形、圆形、线条、路径等)、文本、渐变、滤镜和动画。在SVG中,你可以...

    SVG 入门教程(二) 定义和组

    在本篇SVG入门教程(二)中,我们将深入探讨SVG(Scalable Vector Graphics)的基本概念,以及如何在SVG中定义和组织元素。SVG是一种基于XML的矢量图像格式,它允许我们创建可缩放、高质量的图形,适用于网页和其他...

    SVG教程

    - **基本形状**:SVG支持多种基本图形的绘制,如圆形、矩形、椭圆、多边形和线条等。 - **路径**:通过一系列坐标点和命令描述的曲线和直线,可以创建复杂形状。 - **文本**:SVG还支持文本的嵌入,允许文本与图形...

    SVG教程中文版

    SVG入门实例通常从学习基本的SVG元素开始。SVG的基本形状元素包括矩形()、圆形()、椭圆()、线条()、折线()、多边形()和路径()。这些元素各自拥有独特的属性,用于定义形状的细节,如尺寸、位置、颜色...

    HTML5之SVG 2D入门4—笔画与填充

    在实际应用中,结合CSS可以实现更复杂的动画效果和交互设计。 总的来说,SVG的笔画和填充属性提供了强大的图形装饰功能,让开发者能够精确控制图形的内外部视觉表现。了解并熟练运用这些属性,可以极大地提升SVG...

    vml入门,vml入门

    7. **局限性**:尽管VML可以创建丰富的图形,但它缺乏动画支持,不像SVG那样可以方便地实现动态效果。 8. **替代方案**:随着SVG的普及,现在推荐使用SVG来替代VML,因为SVG是W3C标准,拥有更广泛的浏览器支持和更...

    VML入门到精通(例子)

    - **SVG的优势**:SVG具有更广泛的动画支持、更好的CSS集成、更小的文件大小以及更丰富的社区资源。 - **选择指南**:对于仅需支持旧版IE的项目,VML可能是合适的选择;否则,SVG通常更为推荐。 "WebFlow"可能是...

    快速开发基于 HTML5 网络拓扑图应用--入门篇(三)

    这个过程旨在帮助初学者理解网络拓扑图的创建原理,以及如何通过HTML5的特性来实现交互式的拓扑图应用。 HTML5是一种强大的网页开发标准,它提供了许多新的API和元素,以支持更丰富的交互性和多媒体内容。在开发...

    前端项目-graphicsjs.zip

    GraphicsJS 是一个强大的轻量级JavaScript图形库,它利用SVG(可缩放矢量图形)和VML(矢量标记语言)技术为前端开发者提供了一种直观的API来创建丰富的交互式图形。SVG和VML都是用于在网页上绘制矢量图形的标准,...

Global site tag (gtag.js) - Google Analytics