线条动画入门

SVG 线条动画入门

2016/12/29 · HTML5 ·
SVG,
动画

本文小编: 伯乐在线 –
chokcoco
。未经作者许可,禁止转发!
欢迎出席伯乐在线 专栏撰稿人。

日常大家说的 Web 动画,包蕴了3大类。

  • CSS3 动画
  • javascript 动画(canvas)
  • html 动画(SVG)

村办觉得 三种动画各有上下,实际运用中依据掌握情状作出选取,本文研商的是自作者以为 SVG
中在事实上项目中尤其有利用价值 SVG 线条动画。

1般而言我们说的 Web
动画,包罗了3大类。

  • CSS3 动画
  • javascript 动画(canvas)
  • html 动画(SVG)

普通大家说的 Web
动画,包涵了3大类。

举个栗子

SVG 线条动画,在部分特定的场子下可以化解选择 CSS
不或者到位的卡通片。特别是在进程条方面,看看近年来项目里的3个小供给,1个那种形态的进程条:

图片 1

把当中的进度条单独拿出去,也等于急需贯彻如此一个功力:

图片 2

脑洞大开一下,使用 CSS三 如何贯彻如此二个进程条呢。

CSS三 是能够完毕的,就是很费力。可是假若选择 SVG 的话,一蹴而就。

See the Pen 非寻常进程条 by
Chokcoco (@Chokcoco) on
CodePen.

作者们假使你在翻阅本文的时候有了肯定的 SVG
基础,上边代码看看就懂了,好了,本文到此截至。

图片 3

好啊,照旧一步一步解释,上边进程条的最首要 SVG 代码如下:

<svg version=”1.1″ xmlns=””
xmlns:xlink=”” xml:space=”preserve”
class=”circle-load-rect-svg” width=”300″ height=”200″ viewbox=”0 0 600
400″> <polyline points=”5 5, 575 5, 575 200, 5 200″
class=”g-rect-path”/> <polyline points=”5 5, 575 5, 575 200, 5
200″ class=”g-rect-fill”/> </svg>

1
2
3
4
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" class="circle-load-rect-svg" width="300" height="200" viewbox="0 0 600 400">
  <polyline points="5 5, 575 5, 575 200, 5 200" class="g-rect-path"/>
  <polyline points="5 5, 575 5, 575 200, 5 200" class="g-rect-fill"/>
</svg>
  • CSS3 动画
  • javascript 动画(canvas)
  • html 动画(SVG)

个人认为 三种动画各有上下,实际使用中依据精通意况作出抉择,本文钻探的是本人觉得 SVG
中在实际上项目中十一分有选取价值 SVG 线条动画。

  • CSS3线条动画入门。 动画
  • javascript 动画(canvas)
  • html 动画(SVG)

SVG 为何

可缩放矢量图形,即SVG,是W3C
XML的分枝语言之壹,用于标记可缩放的矢量图形。(摘自MDN)

上面代码中,先谈谈 svg 标签:

  • version: 表示 “ 的版本,近年来唯有 一.0,1.1 两种
  • xmlnshttp://www.w3.org/2000/svg 固定值
  • xmlns:xlinkhttp://www.w3.org/1999/xlink 固定值
  • xml:spacepreserve 固定值,上述八个值固定,表示命名空间,当数码单独存在svg文本内时,那三个值无法不难
  • class:正是我们了然的 class
  • width | height: 定义 svg 画布的分寸
  • viewbox: 定义了画布上得以体现的区域,当 viewBox 的高低和 svg
    分裂时,viewBox 在显示器上的显得会缩放至 svg
    同等大小(暂且能够毫不通晓)

有了 svg 标签,大家就足以心潮澎湃的在中间添加 SVG 图形了,上面,我在 svg 中定义了七个 polyline 标签。

个人觉得 叁种动画各有上下,实际运用中依照精通景况作出选拔,本文研究的是自家以为 SVG
中在事实上项目中尤其有利用价值 SVG 线条动画。

 

个体会认识为 3种动画各有优劣,实际行使中根据明白景况作出选取,本文切磋的是自身以为 SVG
中在实际项目中尤其有利用价值 SVG 线条动画。

SVG 基本造型

polyline:是SVG的2个主导造型,用来成立一名目繁多直线连接三个点。

其实,polyline 是三个比较不常用的造型,比较常用的是pathrectcircle 等。那里自个儿动用polyline 的原故是内需动用 stroke-linejoin 和 stroke-linecap 属性,在线段连接处创建圆滑过渡角。

SVG
中定义了1些主导造型,在继承下文从前,建议点进去先明白部分主旨图形的价签及写法:

图片 4

 

举个栗子

SVG 线条动画,在部分特定的场子下能够消除采纳 CSS
不能够达成的卡通片。特别是在进程条方面,看看方今项目里的1个小供给,贰个那种形态的进程条:

 

把在那之中的进程条单独拿出去,也正是索要贯彻如此贰个功用:

 

脑洞大开一下,使用 CSS三 怎么着促成如此一个进程条呢。

CSS叁 是可以完结的,正是很麻烦。不过只要选择 SVG 的话,一挥而就。

 

大家假诺你在读书本文的时候有了一定的 SVG
基础,上边代码看看就懂了,好了,本文到此停止。

 

好呢,照旧一步一步解释,上面进程条的首要 SVG 代码如下:

1
2
3
4
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" class="circle-load-rect-svg" width="300" height="200" viewbox="0 0 600 400">
    <polyline points="5 5, 575 5, 575 200, 5 200" class="g-rect-path"/>
    <polyline points="5 5, 575 5, 575 200, 5 200" class="g-rect-fill"/>
</svg>

 

SVG 线条动画

好,终于到本文的主要了。

图片 5

下面,大家给八个 polyline 都设置了 class,SVG
图形的贰个便宜就是一对性质样式能够应用 CSS
的艺术书写,更器重的是能够匹配 CSS 动画一起使用。

上面,主要的 CSS 代码:

.g-rect-path{ fill: none; stroke-width:10; stroke:#d3dce6;
stroke-linejoin:round; stroke-linecap:round; } .g-rect-fill{ fill: none;
stroke-width:10; stroke:#ff7700; stroke-linejoin:round;
stroke-linecap:round; stroke-dasharray: 0, 1370; stroke-dashoffset: 0;
animation: lineMove 2s ease-out infinite; } @keyframes lineMove { 0%{
stroke-dasharray: 0, 1350; } 100%{ stroke-dasharray: 1350, 1350; } }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
.g-rect-path{
    fill: none;
    stroke-width:10;
    stroke:#d3dce6;
    stroke-linejoin:round;
    stroke-linecap:round;
}
 
.g-rect-fill{
    fill: none;
    stroke-width:10;
    stroke:#ff7700;
    stroke-linejoin:round;
    stroke-linecap:round;
    stroke-dasharray: 0, 1370;
    stroke-dashoffset: 0;
    animation: lineMove 2s ease-out infinite;
}
 
@keyframes lineMove {
    0%{
        stroke-dasharray: 0, 1350;
    }
    100%{
        stroke-dasharray: 1350, 1350;
    }
}

那尼玛是怎么着CSS?怎么除了 animation 全都不认得? 图片 6

莫慌,其实过多和 CSS 相比较一下百般好掌握,只是换了个名字:

  • fill:类比 css 中的 background-color,给 svg 图形填充颜色;
  • stroke-width:类比 css
    中的 border-width,给 svg 图形设定边框宽度;
  • stroke:类比 css 中的 border-color,给 svg 图形设定边框颜色;
  • stroke-linejoin | stroke-linecap:上文稍微提到过,设定线段连接处的体裁;
  • stroke-dasharray:值是一组数组,没多少上限,每个数字交替表示划线与间隔的宽窄;
  • stroke-dashoffset:则是虚线的偏移量

重要讲讲能够完结线条动画的主要属性 stroke-dasharray 。

属性 stroke-dasharray 可控制用来描边的点划线的图腾范式。

它是四个和数列,数与数以内用逗号恐怕空白隔开,钦命短划线和缺口的尺寸。假使提供了奇数个值,则这么些值的数列重复3回,从而成为偶数个值。因而,5,3,2等同于5,3,2,5,3,2

分解很苍白,直接看例子:

See the Pen stroke-dasharray
by Chokcoco (@Chokcoco) on
CodePen.

地点,填充进程条,使用了下边这一个动画 :

@keyframes lineMove { 0%{ stroke-dasharray: 0, 1350; } 100%{
stroke-dasharray: 1350, 1350; } }

1
2
3
4
5
6
7
8
@keyframes lineMove {
    0%{
        stroke-dasharray: 0, 1350;
    }
    100%{
        stroke-dasharray: 1350, 1350;
    }
}

stroke-dasharray: 0, 1350;,表示线框短划线和缺口的长度分别为 0 和
1350,所以一开首壹切图形都是被缺口占据,所以在视觉效果上长度为 0。

接下来对接到 stroke-dasharray: 1350, 1350,表示线框短划线和缺口的尺寸分别为
1350 和 1350,因为任何图形的长短就是1350,所以一切进程条会被逐步填充满。

操纵了那么些技能后,就足以采取 stroke-dasharray 和 stroke-dashoffset 制作很多正确的彼此场景:

举个栗子

SVG
线条动画,在一些一定的场馆下得以缓解选择 CSS
不或者成功的动画片。特别是在进程条方面,看看近日项目里的3个小需要,二个那种造型的进度条:

图片 7

把内部的进度条单独拿出去,也等于亟需实现那样三个功用:

图片 8

脑洞大开一下,使用
CSS叁 怎么着兑现那样2个进度条呢。

CSS3是足以成功的,就是很辛劳。不过假诺利用 SVG 的话,一蹴即至。

我们只要你在阅读本文的时候有了迟早的
SVG 基础,上面代码看看就懂了,好了,本文到此截止。

图片 9

好吧,照旧一步一步解释,上面进程条的基本点
SVG 代码如下:

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" class="circle-load-rect-svg" width="300" height="200" viewbox="0 0 600 400">
    <polyline points="5 5, 575 5, 575 200, 5 200" class="g-rect-path"/>
    <polyline points="5 5, 575 5, 575 200, 5 200" class="g-rect-fill"/>
</svg>

 

举个栗子

SVG
线条动画,在一些一定的场馆下可以化解使用 CSS
无法成功的卡通片。尤其是在进程条方面,看看近日项目里的3个小须要,1个那种造型的进程条:

图片 10

把在那之中的进度条单独拿出来,相当于亟需贯彻如此八个职能:

图片 11

脑洞大开一下,使用
CSS叁 怎样兑现那样三个进度条呢。

CSS叁是能够完毕的,正是很麻烦。但是借使采纳 SVG 的话,一蹴即至。

我们只要你在读书本文的时候有了自然的
SVG 基础,上边代码看看就懂了,好了,本文到此截至。

图片 12

好吧,还是一步一步解释,下面进度条的严重性
SVG 代码如下:

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" class="circle-load-rect-svg" width="300" height="200" viewbox="0 0 600 400">
    <polyline points="5 5, 575 5, 575 200, 5 200" class="g-rect-path"/>
    <polyline points="5 5, 575 5, 575 200, 5 200" class="g-rect-fill"/>
</svg>

相关文章