css如何实现圆形进度条

css实现圆形进度条的方法:首先画一个方形;然后在方形中画两个等大均分方形的矩形;最后使用css3的“transform:rotate”属性将叠加环形根据实际百分比换算成实际的旋转角度即可。

css如何实现圆形进度条

推荐:《css视频教程》

进度条效果如下:
这里写图片描述

整圆的效果处理会简单些,不完整环实现起来细节多点。下边是实现逻辑和过程。

进度条组成:

立即学习“前端免费学习笔记(深入)”;

环形:两种颜色进度条,当余量少于50%时进度条颜色由绿色变为黄色。进度条结构由两个叠加环形组成;上叠加环形展示剩余量,深色;下叠加环形展示100%总量,浅色。

样式实现:

1:画一个方形,如图中阴影部分所示:
这里写图片描述
2:方形中画两个等大均分方形的矩形,(注意每个矩形一定要设置:overflow:hidden)如图中阴影部分所示:
这里写图片描述这里写图片描述

3:进度条由两个叠加环形组成,所以第一步的方形中需要画四个等大的矩形用来展示不同部分的环形。

4:每个矩形中画一个和父级方形等大的方形,用来展示环形,左半矩形中的环形只设置上边框和左边框;右半矩形中的环形只设置上边框和右边框,如图中阴影所示:

这里写图片描述

5:实现进度条的动态百分比进度,使用css3的transform:rotate将上叠加环形根据实际百分比换算成实际的旋转角度来实现。
当剩余量大于50%时左侧上叠加环形旋转角度不用变,只有计算右测上叠加环形旋转角度即可。
当剩余量小于百分之50%时,左侧上叠加环形旋转时,就会将左半环形展示为完整的半环,此时就需要一个用来遮挡左侧超出进度范围环形部分的左侧环;如下图所示:
这里写图片描述

html代码如下:

//percent小于50时需要使用遮罩进行遮挡超出环形范围部分

剩余

'+circleData.percent+'%

css代码:

.progress_wrap{                   position: relative;                   margin:0 0 0 .14rem;                   width:.92rem;height:.92rem;                   //little和more用来展示黄色和绿色的效果                   &.little{                       .under{                                                      .rightcircle,.leftcircle{                               border-top:$progress_border_under_little;                           }                           .rightcircle{                               border-right:$progress_border_under_little;                           }                           .leftcircle{                               border-left:$progress_border_under_little;                           }                       }                       .up{                           .rightcircle,.leftcircle{                               border-top:$progress_border_up_little;                           }                           .rightcircle{                               border-right:$progress_border_up_little;                           }                           .leftcircle{                               border-left:$progress_border_up_little;                           }                       }                       //用遮挡实现左侧剩余百分比,遮住超出环形范围部分;核心是使用同心圆进行边框进行遮挡                       .up_left_cover{                           width:.47rem;height:.92rem;                           .leftcircle{                               top:-.02rem;                               width:.74rem;height:.74rem;                               border:.11rem solid transparent;                               border-top:$progress_border_up_left_cover_little;                               border-left:$progress_border_up_left_cover_little;                               //实际值为195deg,被遮挡环颜色值深有光晕,需要将角度进行微调(-191deg)进行完全遮挡                               -webkit-transform:rotate(-191deg);                           }                       }                                          }                   &.more{                       .under{                           .rightcircle,.leftcircle{                               border-top:$progress_border_under;                           }                           .rightcircle{                               border-right:$progress_border_under;                           }                           .leftcircle{                               border-left:$progress_border_under;                           }                       }                       .up{                           .rightcircle,.leftcircle{                               border-top:$progress_border_up;                           }                           .rightcircle{                               border-right:$progress_border_up;                           }                           .leftcircle{                               border-left:$progress_border_up;                           }                       }                   }                   .right,.left{                       position: absolute;top:0;overflow:hidden;                       width:.46rem;height:.92rem;                       .circleProgress{                           position: absolute; top:0;                           width: .78rem; height: .78rem;                           border:.07rem solid transparent; border-radius: 50%;                                                  }                       .rightcircle{                           right:0;                           -webkit-transform: rotate(15deg);                       }                       .leftcircle{                           left:0;                           -webkit-transform: rotate(-15deg);                       }                                          }                   .right{                       right:0;                   }                   .left{                       left:0;                   }                   .num{                       position: absolute;left:50%;top:50%;                       width:.5rem;                       transform:translate(-50%,-50%);                       font-size:.12rem;color:$public_auxiliary_col;text-align:center;line-height:.26rem;                   }               }

js代码:

function giftCircleProgressFn(per){            var circleData = {};            var percent = parseInt(per);                        //领取进度环形颜色className            var halfClassName = percent<50?"little":"more";            //左半环遮罩层显示样式状态            var leftCircleDisplay = percent<50?"block":"none";            var leftRotate = 0;            var rightRotate = 0;            //以50%为界限;50%:左半圆占比100%,右半圆直接使用百分比计算所占部分即可            //注意:在半圆中计算百分比时,要将百分比乘以2。            if(percent<50){                leftRotate = -15-180+150*(percent*2)/100;                   rightRotate = -135;            }else{                leftRotate = -15;                rightRotate = -135+(150*((percent-50)*2)/100);   //比例在半环计算需要*2倍            }            circleData = {                leftRotate:leftRotate,  //左半环进度                rightRotate:rightRotate, //右半环进度                halfClassName:halfClassName, //50% 进度环 变色                leftCircleDisplay:leftCircleDisplay, //左半环遮罩                percent:per  //进度百分比            }            return circleData        }

环形旋转角度换算需要根据不同需求进行微调即可。

如有什么好的建议,欢迎多多交流呀。

以上就是css如何实现圆形进度条的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1616179.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 05:16:45
下一篇 2025年12月24日 05:16:53

相关推荐

  • css如何将图片等比缩放

    css将图片等比缩放的方法:可以利用object-fit属性来实现,如【object-fit: cover;】。object-fit属性指定元素的内容应该如何去适应指定容器的高度和宽度。 属性介绍: object-fit 属性指定元素的内容应该如何去适应指定容器的高度与宽度。 (学习视频分享:css…

    好文分享 2025年12月24日
    000
  • css怎么设置不能选中文字

    css设置不能选中文字的方法:可以利用user-select属性来进行设置,如【user-select:none】。user-select属性是css3中新增的,用来控制内容的可选择性。 属性介绍: user-select是在css3 UI规范中新增的一个功能,用来控制内容的可选择性。 (学习视频分…

    2025年12月24日
    000
  • css中的流体布局是什么

    css中的流体布局是指当网页缩小或放大时,网页布局会随着浏览器的大小而改变。流体布局的优势是如果用户的窗口很小,页面就会收缩以适应窗口,而不必横向滚动。 流体布局: 简单来说就是网页缩小和放大时网页布局会随着浏览器的大小而改变! (学习视频分享:css视频教程) 优势: 立即学习“前端免费学习笔记(…

    2025年12月24日
    000
  • css中如何给整个页面添加背景颜色

    css中给整个页面添加背景颜色的方法:可以利用background-color属性来添加背景颜色,如【background-color:yellow;】。background-color属性用于设置一个元素的背景颜色。 background-color属性设置一个元素的背景颜色。 元素的背景是元素的…

    2025年12月24日
    000
  • css目标伪类是什么

    在css中,目标伪类是“:target”,语法格式“E:target{css样式}”,它表示选择匹配E的所有元素,且匹配元素被相关URL指向;该选择器是动态选择器,只有当存在URL指向该匹配元素时,样式效果才能够有效。 (推荐教程:CSS视频教程) 在css中,目标伪类选择器是“:target”,是…

    2025年12月24日
    000
  • css中width有啥属性?

    css中width相关的属性有:width属性、min-width属性、max-width属性、border-width属性、outline-width属性、column-rule-width属性、column-width属性等等。 css中width相关的属性 width属性:设置元素的宽度 mi…

    2025年12月24日
    000
  • css如何让图片和文字垂直居中对齐

    css让图片和文字垂直居中对齐的方法:可以通过flex布局来实现,如【display: -webkit-flex;】。flex布局即弹性布局,用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为flex布局。 可以使用flex布局实现居中(更简单,不支持IE9)。 (学习视频推荐:css视频教程…

    2025年12月24日
    000
  • SenCSS是什么?

    SenCSS是一款css框架,它为CSS重复的部分提供了合理的样式,并且不会强制布局系统;这样你就能更加关注于自己网站的样式,且有大把时间可以攻克其他网站研发的重要问题。 SenCSS全名– 合理标准 CSS (ensible Standards CSS),是一个CSS框架。它为CSS重复的部分提供…

    2025年12月24日
    000
  • css怎么让图片旋转90度

    css让图片旋转90度的方法:利用transform属性来进行图片旋转,如【transform:rotate(90deg)】。transform属性用于元素的2D或3D转换,该属性允许我们将元素旋转、缩放、移动、倾斜。 属性介绍: Transform属性应用于元素的2D或3D转换。这个属性允许你将元…

    2025年12月24日
    000
  • css3中2d变形有几种?

    css3中2d变形4种:1、位移translate(),将元素在水平或垂直方向上移动指定距离;2、缩放scale(),对元素进行水平或垂直方向的缩放;3、旋转rotate(),可以对元素进行旋转;4、倾斜skew(),对元素进行倾斜转换。 【推荐教程:CSS视频教程 】 转换是CSS3中具有颠覆性的…

    2025年12月24日 好文分享
    000
  • css和div的区别是什么

    css和div的区别:1、div标签可定义文档中的分区或节,用于定义HTML文档中的一个分隔区块或者一个区域部分;2、CSS是一种用来表现HTML或XML等文件样式的计算机语言。 (推荐教程:css视频教程) div是html标签 标签可定义文档中的分区或节(division/section),用于…

    2025年12月24日
    000
  • css派生选择器怎么用

    css派生选择器的使用方法:派生选择器允许根据文档的上下文关系来确定某个标签的样式,通过合理地使用派生选择器,可以使HTML代码变得更加整洁。 (推荐教程:css视频教程) css派生选择器的使用方法: 通过依据元素在其位置的上下文关系来定义样式,你可以使标记更加简洁。 在 CSS1 中,通过这种方…

    2025年12月24日
    000
  • css中什么是外部样式表?

    在css中,如果CSS样式被放置在网页文档外部的文件中,则称为外部样式表,一个CSS样式表文档就表示一个外部样式表;css外部样式表文件使用“.CSS”为扩展名,且HTML文档中包含指向该文件位置的链接,以便Web浏览器知道在哪里查找样式。 【推荐教程:CSS视频教程 】 当Web浏览器加载网页时,…

    2025年12月24日
    000
  • css child选择器有哪些?

    css child选择器有5个,分别为:“:first-child”选择器、“:only-child”选择器、“:nth-child(n)”选择器、“:nth-last-child(n)”选择器、“:last-child”选择器。 【推荐教程:CSS视频教程 】 css child选择器 :firs…

    2025年12月24日
    000
  • css中BEM命名规范是什么

    一 什么是 BEM 命名规范 Bem 是块(block)、元素(element)、修饰符(modifier)的简写,由 Yandex 团队提出的一种前端 CSS 命名方法论。 (学习视频分享:css视频教程) – 中划线 :仅作为连字符使用,表示某个块或者某个子元素的多单词之间的连接记号…

    2025年12月24日 好文分享
    000
  • css怎么实现字体描边效果

    css实现字体描边效果的方法:可以利用text-stroke属性来实现字体描边效果,如【-webkit-text-stroke:6px transparent;】。text-stroke属性常配合text-fill-color属性一起使用。 text-stroke是text-stroke-width…

    2025年12月24日
    000
  • 常见的css块级元素有哪些

    css块级元素介绍: (学习视频分享:css视频教程) 根据W3C上的解释,就是说block(块级)元素是独占一行显示的。它的兄弟元素必定不会与其在同一行中(除非脱离了文档流)。其实,通俗点来说,就是块元素(block element)一般是其他元素的容器元素,能容纳其他块元素或内联元素。最常见的就…

    2025年12月24日
    000
  • css怎么自定义字体样式

    css自定义字体样式的方法:可以利用font属性来自定义字体样式,如【font-weight:normal;】。font-weight属性用于设置文本的粗细,如果要设置文本字体大小,可以使用font-size属性。 font 简写属性在一个声明中设置所有字体属性。 (学习视频推荐:css视频教程) …

    2025年12月24日
    000
  • css怎么让首行文字缩进

    css让首行文字缩进的方法:可以利用text-indent属性来实现,如【text-indent:50px;】。text-indent属性规定文本块中首行文本的缩进,常用于建立一个标签页效果。 属性介绍: text-indent 属性规定文本块中首行文本的缩进。 (学习视频推荐:css视频教程) 注…

    2025年12月24日
    000
  • 深入浅析css z-index(附示例)

    做过页面布局的同学对z-index属性应该是很熟悉了,z-index是针对网页显示中的一个特殊属性。因为显示器是显示的图案是一个二维平面,拥有x轴和y轴来表示位置属性。为了表示三维立体的概念如显示元素的上下层的叠加顺序引入了z-index属性来表示z轴的区别。表示一个元素在叠加顺序上的上下立体关系。…

    2025年12月24日 好文分享
    000

发表回复

登录后才能评论
关注微信