圆形百分比进度条效果
一、前言
最近有点懈怠啊,没怎么整理发布博客。今天写篇文章和大家分享一个常用的效果,圆形百分比进度条。前段时间我有个页面需要该效果,就在网上看了下,实现方式有好几种,我找了一种比较好实现的给大家一步步讲解。
如果您觉得对您有帮助的话,请给我个赞或评论,谢谢~
先放效果图:
参考别人的链接:HTML+CSS 实现环形比例图效果
二、整体思路
1.设置一个浅灰色的圆当背景,里面只有两个子元素,
一个在右侧的浅蓝色半圆,一个小一点的白色圆在中间做遮罩以及显示文字。
<div class="bg"><div class="circle-right"></div><div class="text">%</div>
</div>
2.当进度小于等于50%时,往右侧浅蓝色的半圆里添加一子元素,是个填充满它的灰色半圆,
根据进度的值对该灰色半圆进行顺时针旋转,就会显示出代表进度的浅蓝色。
圆一圈是360度,我们这里的满进度是100,
那当进度为10%时,就让灰色半圆顺时针旋转36度,就可以显示出36度范围的浅蓝色。
<div class="bg"><div class="circle-right"><div class="mask-right" style="transform:rotate(36deg)"></div></div><div class="text">10%</div>
</div>
3.当进度大于50时,往右侧浅蓝色半圆后面添加一个元素,是个左侧的浅蓝色半圆,
该左侧半圆里包含一子元素是个填充满它的灰色半圆,于是左侧展示的效果是灰色半圆。
右侧浅蓝色半圆代表进度50,剩下的进度则是左侧半圆里灰色半圆的顺时针旋转度数,来展示剩下的浅蓝色进度。
例如当进度为60%时,右侧不动,左侧半圆里灰色半圆顺时针旋转36度,来展示36度范围的浅蓝色。
<div class="bg"><div class="circle-right"></div><div class="circle-left"><div class="mask-left" style="transform: rotate(36deg);"></div></div><div class="text">60%</div>
</div>
三、完整案例
通过上面的介绍,我想大家对这个实现的流程已经有了思路,现在我放出完整的demo给大家,直接复制就可以看到效果:
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>圆形百分比进度条效果</title><style type="text/css">*{margin: 0;padding: 0;}.bg{width: 200px;height: 200px;border-radius: 100%;background: #ccc;position: relative;margin: 20px auto;}.circle-right, .circle-left, .mask-right, .mask-left{width: 200px;height: 200px;border-radius: 100%;position: absolute;top: 0;left: 0;}.circle-right, .circle-left{background: skyblue;}.mask-right, .mask-left{background: #ccc;}.circle-right, .mask-right{clip: rect(0,200px,200px,100px);}.circle-left, .mask-left{clip: rect(0,100px,200px,0);}.text{width: 160px;height: 160px;line-height: 160px;text-align: center;font-size: 34px;color: deepskyblue;border-radius: 100%;background: #fff;position: absolute;top: 20px;left: 20px;}</style></head><body><div class="bg"><div class="circle-right"></div><div class="text">90%</div></div><script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script><script type="text/javascript">$(function(){//获取百分比值var value = parseInt($('.text').html());//当百分比小于等于50if(value <= 50){var html = '';html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';//元素里添加子元素$('.circle-right').append(html);}else{value -= 50;var html = '';html += '<div class="circle-left">';html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';html += '</div>';//元素后添加元素$('.circle-right').after(html);}})</script></body>
</html>
四、添加过渡
在完成我们要的效果后,我们可以给它添加一个过渡的效果,我这里是用计时器来完成的,过渡的其实不是很自然,大家也可以用其他的方式来实现。
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>圆形百分比进度条效果</title><style type="text/css">*{margin: 0;padding: 0;}.bg{width: 200px;height: 200px;border-radius: 100%;background: #ccc;position: relative;margin: 20px auto;}.circle-right, .circle-left, .mask-right, .mask-left{width: 200px;height: 200px;border-radius: 100%;position: absolute;top: 0;left: 0;}.circle-right, .circle-left{background: skyblue;}.mask-right, .mask-left{background: #ccc;}.circle-right, .mask-right{clip: rect(0,200px,200px,100px);}.circle-left, .mask-left{clip: rect(0,100px,200px,0);}.text{width: 160px;height: 160px;line-height: 160px;text-align: center;font-size: 34px;color: deepskyblue;border-radius: 100%;background: #fff;position: absolute;top: 20px;left: 20px;}</style></head><body><div class="bg"><div class="circle-right"></div><div class="text">10%</div></div><script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script><script type="text/javascript">$(function(){ //获取百分比值var num = parseInt($('.text').html());//通过计时器来显示过渡的百分比进度var temp = 0;var timer = setInterval(function(){calculate(temp);//清除计时器结束该方法调用if(temp == num){clearInterval(timer);}temp++;},30)//改变页面显示百分比function calculate(value){//改变页面显示的值$('.text').html(value + '%');//清除上次调用该方法残留的效果$('.circle-left').remove();$('.mask-right').remove();//当百分比小于等于50if(value <= 50){var html = '';html += '<div class="mask-right" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';//元素里添加子元素$('.circle-right').append(html);}else{value -= 50;var html = '';html += '<div class="circle-left">';html += '<div class="mask-left" style="transform:rotate('+ (value * 3.6) +'deg)"></div>';html += '</div>';//元素后添加元素$('.circle-right').after(html);}}})</script></body>
</html>
圆形百分比进度条效果相关推荐
- 在html中怎么用圆形渐变,css怎么实现圆形渐变进度条效果
css怎么实现圆形渐变进度条效果 发布时间:2021-03-17 10:29:57 来源:亿速云 阅读:129 作者:小新 这篇文章给大家分享的是有关css怎么实现圆形渐变进度条效果的内容.小编觉得挺 ...
- vue 圆形百分比进度条_快速构建一个圆形的进度条
在一些特别生的网站上,用户需要一个可视化的是示,以表明网站资源仍然在加载.从Spinner到Skeleton屏幕有不同的方法来解决这类的用户体验效果. 如果我们使用的是开箱即用的解决方案,它为我们提供 ...
- ajax百分比加载特效,jQuery实现的简单百分比进度条效果示例
本文实例讲述了jQuery实现的简单百分比进度条.分享给大家供大家参考,具体如下: 一.JS Code: var progressId = "ProgressBarID"; fun ...
- vue 圆形百分比进度条_vue实用组件——圆环百分比进度条
有需要的人可以参考一下,如果试用过,发现问题,欢迎留言告知,不胜感激. 功能介绍: 1.若页面无刷新,且第一次传值小于第二次传值或者圆环初始化时执行的是递增动画 2.若页面无刷新,且第一次传值大于第二 ...
- vue 圆形百分比进度条_uniapp Vue 圆环进度条
mode="aspectFill"> export default { name: '', props: { }, data() { return { animationDa ...
- android 画圆弧动画,『Android自定义View实战』自定义带入场动画的弧形百分比进度条...
写在前面 这是在简书发表的处女座,这个想法也停留在脑海中很久了,一直拖到现在(懒癌发作2333),先自我介绍一番,一枚刚毕业不久的Android程序猿,初出茅庐的Android小生,之前一直在CSDN ...
- php 进度条百分比算法,实例讲解Ajax实现简单带百分比进度条
最近做项目遇到这样的需求要求当进行文件长传保存等操作时,能在页面显示一个带百分比的进度条,给用户一个好的交互体验,下面通过实例代码给大家介绍基于ajax实现带百分比进度条效果,需要的的朋友参考下吧,希 ...
- JS框架_(Progress.js)圆形动画进度条
百度云盘 传送门 密码: 6mcf 圆形动画进度条效果: <!DOCTYPE html> <html lang="en"> <head>< ...
- HTML + CSS 实现矩形/圆形进度条效果 - SVG
本文记录通过 HTML + CSS + 部分原生 JS 使用 SVG 嵌入 HTML 文档的用法实现常见的圆形和矩形进度条效果,效果图如下:(实际运行效果是进度条从 0 过渡到一个目标值比如 100% ...
最新文章
- ubuntu openstack spice
- 在CSDN上的第一篇博客
- 决策树 算法原理及代码
- SpringBoot入门-基础入门
- 你的电脑已经成为肉鸡的六种现象
- 各种乐器与人声的频率特性说明
- Windows的一些网络设置
- 如果计算机正执行屏幕保护程序 当用户,计算机一级考试参考试题(含答案)讲节一.doc...
- 准银河字母、当铺密码、摩斯电码详解
- 基于Levy飞行策略的改进樽海鞘群算法( LECUSSA) Matlab代码
- php多语言商城,Ecshop商城多国语言修改方法
- dos从优盘启动计算机,对老旧电脑升级很重要,教你制作纯DOS的U盘启动盘
- 景深与光圈、拍摄距离和镜头焦距的关系
- .NET Core使用NPOI导出复杂,美观的Excel详解
- 云计算、大数据、人工智能三者究竟有什么关系
- 日历本(给出年份生成日历)
- 【Windows无法修复问题】“启动修复”无法修复你的电脑解决方法
- Aggressive cows-疯牛POJ(2456)-详解
- SRS十周年杭州站沙龙技术备忘录
- Python实战之数字、日期和时间的高级处理