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中border-radius属性设定圆角的使用技巧
May 10 HTML / CSS
CSS3中文字镂空、透明值、阴影效果设置示例小结
Mar 07 HTML / CSS
css3高级选择器使用方法
Dec 02 HTML / CSS
CSS3效果:自定义“W”形运行轨迹实例
Mar 29 HTML / CSS
HTML5中FileReader接口使用方法实例详解
Aug 26 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
Mar 22 HTML / CSS
使用HTML5 Canvas API控制字体的显示与渲染的方法
Mar 24 HTML / CSS
详解html5 shiv.js和respond.min.js
Jan 24 HTML / CSS
详解Canvas实用库Fabric.js使用手册
Jan 07 HTML / CSS
Canvas实现贝赛尔曲线轨迹动画的示例代码
Apr 25 HTML / CSS
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
Aug 19 HTML / CSS
详解如何在登录过期后跳出Ifram框架
Sep 10 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 header函数使用教程
2013/09/05 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
PHP生成图表pChart的示例解析
2020/07/31 PHP
jquery 的 $(&quot;#id&quot;).html() 无内容的解决方法
2010/06/07 Javascript
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
javascript操作ul中li的方法
2015/05/14 Javascript
JavaScript中this详解
2015/09/01 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
2016/06/18 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
Vue 无限滚动加载指令实现方法
2019/05/28 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
2019/07/29 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
[00:09]DOTA2全国高校联赛 精彩活动引爆全场
2018/05/30 DOTA
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
介绍Python的Django框架中的QuerySets
2015/04/20 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
python 写函数在一定条件下需要调用自身时的写法说明
2020/06/01 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
英国手机零售商:Metrofone
2019/03/18 全球购物
医药大学生求职简历的自我评价
2013/10/17 职场文书
外贸业务员求职信范文
2013/12/12 职场文书
委托书英文
2015/01/28 职场文书
未中标通知书
2015/04/17 职场文书
利用Python多线程实现图片下载器
2022/03/25 Python
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android