一、前言

最近有点懈怠啊,没怎么整理发布博客。今天写篇文章和大家分享一个常用的效果,圆形百分比进度条。前段时间我有个页面需要该效果,就在网上看了下,实现方式有好几种,我找了一种比较好实现的给大家一步步讲解。

如果您觉得对您有帮助的话,请给我个赞或评论,谢谢~

先放效果图:

参考别人的链接: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>

圆形百分比进度条效果相关推荐

  1. 在html中怎么用圆形渐变,css怎么实现圆形渐变进度条效果

    css怎么实现圆形渐变进度条效果 发布时间:2021-03-17 10:29:57 来源:亿速云 阅读:129 作者:小新 这篇文章给大家分享的是有关css怎么实现圆形渐变进度条效果的内容.小编觉得挺 ...

  2. vue 圆形百分比进度条_快速构建一个圆形的进度条

    在一些特别生的网站上,用户需要一个可视化的是示,以表明网站资源仍然在加载.从Spinner到Skeleton屏幕有不同的方法来解决这类的用户体验效果. 如果我们使用的是开箱即用的解决方案,它为我们提供 ...

  3. ajax百分比加载特效,jQuery实现的简单百分比进度条效果示例

    本文实例讲述了jQuery实现的简单百分比进度条.分享给大家供大家参考,具体如下: 一.JS Code: var progressId = "ProgressBarID"; fun ...

  4. vue 圆形百分比进度条_vue实用组件——圆环百分比进度条

    有需要的人可以参考一下,如果试用过,发现问题,欢迎留言告知,不胜感激. 功能介绍: 1.若页面无刷新,且第一次传值小于第二次传值或者圆环初始化时执行的是递增动画 2.若页面无刷新,且第一次传值大于第二 ...

  5. vue 圆形百分比进度条_uniapp Vue 圆环进度条

    mode="aspectFill"> export default { name: '', props: { }, data() { return { animationDa ...

  6. android 画圆弧动画,『Android自定义View实战』自定义带入场动画的弧形百分比进度条...

    写在前面 这是在简书发表的处女座,这个想法也停留在脑海中很久了,一直拖到现在(懒癌发作2333),先自我介绍一番,一枚刚毕业不久的Android程序猿,初出茅庐的Android小生,之前一直在CSDN ...

  7. php 进度条百分比算法,实例讲解Ajax实现简单带百分比进度条

    最近做项目遇到这样的需求要求当进行文件长传保存等操作时,能在页面显示一个带百分比的进度条,给用户一个好的交互体验,下面通过实例代码给大家介绍基于ajax实现带百分比进度条效果,需要的的朋友参考下吧,希 ...

  8. JS框架_(Progress.js)圆形动画进度条

    百度云盘 传送门 密码: 6mcf 圆形动画进度条效果: <!DOCTYPE html> <html lang="en"> <head>< ...

  9. HTML + CSS 实现矩形/圆形进度条效果 - SVG

    本文记录通过 HTML + CSS + 部分原生 JS 使用 SVG 嵌入 HTML 文档的用法实现常见的圆形和矩形进度条效果,效果图如下:(实际运行效果是进度条从 0 过渡到一个目标值比如 100% ...

最新文章

  1. ubuntu openstack spice
  2. 在CSDN上的第一篇博客
  3. 决策树 算法原理及代码
  4. SpringBoot入门-基础入门
  5. 你的电脑已经成为肉鸡的六种现象
  6. 各种乐器与人声的频率特性说明
  7. Windows的一些网络设置
  8. 如果计算机正执行屏幕保护程序 当用户,计算机一级考试参考试题(含答案)讲节一.doc...
  9. 准银河字母、当铺密码、摩斯电码详解
  10. 基于Levy飞行策略的改进樽海鞘群算法( LECUSSA) Matlab代码
  11. php多语言商城,Ecshop商城多国语言修改方法
  12. dos从优盘启动计算机,对老旧电脑升级很重要,教你制作纯DOS的U盘启动盘
  13. 景深与光圈、拍摄距离和镜头焦距的关系
  14. .NET Core使用NPOI导出复杂,美观的Excel详解
  15. 云计算、大数据、人工智能三者究竟有什么关系
  16. 日历本(给出年份生成日历)
  17. 【Windows无法修复问题】“启动修复”无法修复你的电脑解决方法
  18. Aggressive cows-疯牛POJ(2456)-详解
  19. SRS十周年杭州站沙龙技术备忘录
  20. Python实战之数字、日期和时间的高级处理

热门文章

  1. python怎么新建工程_Python vue坏境搭建及项目创建
  2. 高中数学40分怎么办_高中数学补课能听懂考试40分
  3. 富兰克林的风筝:ReID产业化拉开的计算视觉新序幕
  4. 最大似然函数及其求解
  5. Keil5安装和使用小记
  6. Java#21(抽象与接口)
  7. CircuitJS 好玩实用电路仿真软件
  8. 关于switch的参数类型
  9. tshark简单使用-wireshark
  10. DoIP协议从入门到精通系列——车辆声明