博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小tip: 使用SVG寥寥数行实现圆环loading进度效果
阅读量:4355 次
发布时间:2019-06-07

本文共 955 字,大约阅读时间需要 3 分钟。

二、正文

设计师设计了一个图片上传圆环loading进度效果。如下截图:

loading效果截图

首先,CSS3是可以实现的,以前写过一篇转大饼的文章:“”。原理跟这个一模一样,两个半区的矩形,然后不同时机巧妙显隐实现。

但是呢,CSS3实现不太好理解,进度控制也不容易,最好直接数值变一变,进度效果就出来。

有没有其他方法呢?

哈,当然有,可以使用同样IE9+支持的SVG.

我们只需要一个实线背景圆,一个虚线变化圆两个圆就可以了。

百闻不如一见,您可以狠狠地点击这里:

拖动demo下面的range区域选择控件(0-100%)就会发现蓝色高亮圆环跟着一起变化了:

圆环效果截图

SVG代码非常简单,如下示意:

其中,上面红色加粗的就是效果实现的关键。

stroke-dasharray在SVG中表示描边是虚线,两个值,第一个是虚线的宽度,第二个是虚线之间的间距。下面就是一些虚线数据值以及最后的效果表现(实时,非截图,IE9+浏览):

之前写了篇“”,就是stroke-dasharray的妙用。

这里也是类似原理。

理解了stroke-dasharray,我们的事情就简单了,我们只需要让间距永远不小于圆的周长,然后,虚线的长度 = 百分比值 * 圆的周长就可以了。

简单,超乎想象:

// 假设周长是1068, percent是百分比值circle.setAttribute('stroke-dasharray', 1068 * percent + " 1069");

就OK了。

哦~~差点忘了。默认stroke-dasharray的起始位置在右侧,而不是上方,因此,偶们需要使用transform逆时针旋转90°, 这就是第二个circle元素上面transform="matrix(0,-1,1,0,0,440)"的由来。

转载于:https://www.cnblogs.com/jiangxiaobo/p/5997747.html

你可能感兴趣的文章
javascript小白学习指南1---0
查看>>
div:给div加滚动栏 div的滚动栏设置
查看>>
java随机函数使用方法Random
查看>>
链表中环的入口结点
查看>>
凤姐讲学英语
查看>>
ActionBar
查看>>
5种方法实现数组去重
查看>>
2~15重点语法
查看>>
flask中的CBV,flash,Flask-Session,WTForms - MoudelForm,DBUtils 数据库连接池
查看>>
最近整理的提供免费代理列表的几个网站
查看>>
探偵ガリレオー転写る2
查看>>
快速排序算法C++实现[评注版]
查看>>
七尖记
查看>>
SAP(最短增广路算法) 最大流模板
查看>>
用极大化思想解决矩形问题学习笔记
查看>>
Django REST Framework 简单入门
查看>>
Hibernate中fetch和lazy介绍
查看>>
修改ip脚本
查看>>
解析xlsx与xls--使用2012poi.jar
查看>>
java5,java6新特性
查看>>