html svg生成环形进度条的实现方法


Posted in HTML / CSS onSeptember 23, 2019

之前在项目中遇到一个环形进度条的需求,要求能实时更新进度,脑海中瞬间便蹦出css,svg,canvas3中方案,对于3种方案个人更偏向于svg,用法简单,代码量也很少,同时也便于实时控制。具体效果如下图:

html svg生成环形进度条的实现方法

代码非常简单:

<svg width="150px" height="150px" class="svg">
    <circle r="70" cy="75" cx="75" stroke-width="8" stroke="#EAEFF4" stroke-linejoin="round" stroke-linecap="round" fill="none"/>
    <circle class="progress" r="70" cy="75" cx="75" stroke-width="8" stroke="#1593FF" stroke-linejoin="round" stroke-linecap="round" fill="none" stroke-dashoffset="0px"  stroke-dasharray="471px" />
</svg>

为了便于演示,我们先用css动画控制:

svg {
    transform: rotate(-90deg);
}
.progress {
    animation: rotate 1500ms linear both;
}
@keyframes rotate {
    from {
        stroke-dashoffset: 471px;
    }
    to {
        stroke-dashoffset: 0px;
    }
}

实现原理

实现原理非常简单,就是应用svg的stroke-dashoffset和stroke-dasharray属性。

stroke-dasharray

官方解释为可控制用来描边的点划线的图案范式,即定义虚线每段长度即虚线间间隔,数与数之间用逗号或者空白隔开,指定短划线和缺口的长度。如果提供了奇数个值,则这个值的数列重复一次,从而变成偶数个值。

stroke-dashoffset

标识的是整个路径的偏移值。

通过控制虚线的间隔与偏移值,便可以行程各种各样的线条动画,当然我们还可以通过js控制,如下:

let path = document.querySelector('#path');
// 可获取路径的长度
let len = path.getTotalLength();
path.style.cssText = `stroke-dasharray:"${number}"`;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
纯css3实现照片墙效果
Dec 26 HTML / CSS
CSS3中Transition动画属性用法详解
Jul 04 HTML / CSS
Html5实现如何在两个div元素之间拖放图像
Mar 29 HTML / CSS
html5通过postMessage进行跨域通信的方法
Dec 04 HTML / CSS
canvas仿写贝塞尔曲线的示例代码
Dec 29 HTML / CSS
html5调用app分享功能示例(WebViewJavascriptBridge)
Mar 21 HTML / CSS
HTML5拖拽API经典实例详解
Apr 20 HTML / CSS
html5 canvas实现给图片添加平铺水印
Aug 20 HTML / CSS
canvas实现滑动验证的实现示例
Aug 11 HTML / CSS
AmazeUI 折叠面板的实现代码
Aug 17 HTML / CSS
前端水印的简单实现代码示例
Dec 02 HTML / CSS
CSS3常见动画的实现方式
Apr 14 HTML / CSS
html2 canvas生成清晰的图片实现打印功能
Sep 23 #HTML / CSS
将SVG图引入到HTML页面的实现
Sep 20 #HTML / CSS
解析浏览器的一些“滚动”行为鉴赏
Sep 16 #HTML / CSS
html5移动端价格输入键盘的实现
Sep 16 #HTML / CSS
canvas生成带二维码海报的踩坑记录
Sep 11 #HTML / CSS
html5写一个BUI折叠菜单插件的实现方法
Sep 11 #HTML / CSS
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
Sep 09 #HTML / CSS
You might like
php expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
用JTrackBar实现的模拟苹果风格的滚动条
2007/08/06 Javascript
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
jquery animate实现鼠标放上去显示离开隐藏效果
2013/07/21 Javascript
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
Vue中props的使用详解
2018/06/15 Javascript
Vertx基于EventBus发送接受自定义对象
2020/11/16 Javascript
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
python实现读取命令行参数的方法
2015/05/22 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
利用python提取wav文件的mfcc方法
2019/01/09 Python
python pexpect ssh 远程登录服务器的方法
2019/02/14 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
python 实现两个npy档案合并
2020/07/01 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
css3 media 响应式布局的简单实例
2016/08/03 HTML / CSS
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
工程力学硕士生的自我评价范文
2013/11/16 职场文书
珠宝店促销方案
2014/03/21 职场文书
大型会议策划方案
2014/05/17 职场文书
应聘教师求职信
2014/07/19 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
2015年度内部审计工作总结
2015/05/20 职场文书
Nginx 502 Bad Gateway错误原因及解决方案
2021/03/31 Servers
看完这篇文章获得一些java if优化技巧
2021/07/15 Java/Android
Python如何将list中的string转换为int
2022/07/15 Ruby