利用svg画圆环进度条的两种方式

本文只要描述利用svg circle标签的实现方法
  • 知识点准备(摘自阮一峰老师的网络日志)

    1.标签

    SVG 代码都放在顶层标签``之中。下面是一个例子。

    
      
    
    

    的width属性和height属性,指定了SVG 图像在` HTML 元素中所占据的宽度和高度。除了相对单位,也可以采用绝对单位(单位:像素)。如果不指定这两个属性,SVG 图像默认大小是300像素(宽) x 150像素(高)。

    如果只想展示 SVG 图像的一部分,就要指定viewBox属性。

    
      
    
    

    属性的值有四个数字,分别是左上角的横坐标和纵坐标、视口的宽度和高度。上面代码中,SVG 图像是100像素宽 x 100像素高,`viewBox属性指定视口从(50, 50)这个点开始。所以,实际看到的是右下角的四分之一圆。

    注意,视口必须适配所在的空间。上面代码中,视口的大小是 50 x 50,由于 SVG 图像的大小是 100 x 100,所以视口会放大去适配 SVG 图像的大小,即放大了四倍。

    如果不指定width属性和height属性,只指定viewBox属性,则相当于只给定SVG 图像的长宽比。这时,SVG 图像的默认大小将等于所在的 HTML 元素的大小。

2.circle标签

``标签代表圆形。


  
  
  

上面的代码定义了三个圆。标签的`cx`、`cy`、`r`属性分别为横坐标、纵坐标和半径,单位为像素。坐标都是相对于画布的左上角原点。

class属性用来指定对应的 CSS类。

.red {
  fill: red;
}

.fancy {
  fill: none;
  stroke: black;
  stroke-width: 3pt;
}

SVGCSS 属性与网页元素有所不同。

  • fill:填充色
  • stroke:描边色
  • stroke-width:边框宽度

3.animate标签

``标签用于产生动画效果。


  
    
  

上面代码中,矩形会不断移动,产生动画效果。

animate的属性含义如下。

  • attributeName:发生动画效果的属性名。
  • from:单次动画的初始值。
  • to:单次动画的结束值。
  • dur:单次动画的持续时间。
  • repeatCount:动画的循环模式。
  • fill:可以让动画结束后停留 可选值 freeze:停在最后一帧 remove:回到初始帧

可以在多个属性上面定义动画。



  • 两种方式主要利用了svgstroke-dasharray属性控制描边幅度

    stroke-dasharray 属性通俗来讲就是把描边变成点状形态,类似borderdashed 的效果

    stroke-dasharray 可接受多个参数

    例如:

    1.stroke-dasharray: 10 表示 先描边10个单位 在空10个单位 在描边10个单位 在空10个单位...... 直到描完整个边
    2.stroke-dasharray: 10 20 表示 先描边10个单位 在空20个单位 在描边10个单位 在空20个单位...... 直到描完整个边
    3.stroke-dasharray: 10 20 30 表示 先描边10个单位 在空20个单位 在描边30个单位 在空10个单位...... 直到描完整个边
    
以下是具体实现方式

1.利用svganimate标签实现


  
    
  

//此处stroke-dasharray的第二个参数只要能够大于整个圆环路径周长就可以,通过控制animate中 to 的属性,控制描边幅度,具体像圆环这种效果可以画两个circle,一个有描边,一个按上述控制就是圆环进度条的样子。

2.利用js动态控制 stroke-dasharray属性,然后再css中加上过渡动画




  
  Title
  



  
  





你可能感兴趣的:(利用svg画圆环进度条的两种方式)