本教程操作环境:Windows10系统、CSS3版、DELL G3电脑
css怎么实现环形循环进度条?
CSS实现圆环进度条
一、静态进度条
首先,我们先看一个静态进度条
第一步当然是先实现一个最外层的父级圆环。
其次是通过
clip-path
画出两个半圆,并绝对定位覆盖在父级圆环。小于50的时候,我们只需要通过旋转右半圆,慢慢透露出父级圆环的颜色,即可达到效果。
大于50的时候,我们先按照流程走前面50,再设置右半圆旋转度数为0,修改其border颜色来实现前50的效果,其次再旋转左侧半圆即可达到效果。
<template>
<div class="circle">
<div class="circle_left ab" :style="renderLeftRate(85)"></div>
<div class="circle_right ab" :style="renderRightRate(85)"></div>
<div class="circle_text">
<span class="name">成功率</span>
<span class="value">85%</span>
</div>
</div></template><script lang="ts">export default {
name: 'CircleProgress',
setup() {
const renderRightRate = (rate: number) => {
if (rate < 50) {
return 'transform: rotate(' + 3.6 * rate + 'deg);';
} else {
return 'transform: rotate(0);border-color: #54c4fd;';
}
};
const renderLeftRate = (rate: number) => {
if (rate >= 50) {
return 'transform: rotate(' + 3.6 * (rate - 50) + 'deg);';
}
};
return {
renderLeftRate,
renderRightRate,
};
},};</script><style lang="scss">.circle {
width: 80px;
height: 80px;
position: relative;
border-radius: 50%;
left: 200px;
top: 50px;
box-shadow: inset 0 0 0 5px #54c4fd;
.ab {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
}
&_left {
border: 5px solid #546063;
border-radius: 50%;
clip: rect(0, 40px, 80px, 0);
}
&_right {
border: 5px solid #546063;
border-radius: 50%;
clip: rect(0, 80px, 80px, 40px);
}
&_text {
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: #fff;
.name {
margin-bottom: 4px;
}
}}</style>
效果如下图:
二、动态进度条
动态的css
其实和静态的是一样的。
该例子是写的固定的进度,你们也可以根据自己的需求变换。
<template>
<div class="circle">
<div ref="circleLeft" class="circle_left ab"></div>
<div ref="circleRight" class="circle_right ab"></div>
<div class="circle_text">
<span class="name">成功率</span>
<span class="value">85%</span>
</div>
</div></template><script lang="ts">import { onMounted, ref, Ref } from 'vue';export default {
name: 'CircleProgress',
setup() {
const circleLeft: Ref<HTMLElement | null | any> = ref(null);
const circleRight: Ref<HTMLElement | null | any> = ref(null);
let timer = 0;
let percent = 0;
const step = () => {
percent += 1;
if (percent < 50) {
circleRight.value.style.transform = 'rotate(' + 3.6 * percent + 'deg)';
} else {
circleRight.value.style.transform = 'rotate(0)';
circleRight.value.style.borderColor = '#54c4fd';
circleLeft.value.style.transform = 'rotate(' + 3.6 * (percent - 50) + 'deg)';
}
if (percent < 85) {
window.clearTimeout(timer);
timer = window.setTimeout(step, 20);
}
};
onMounted(() => {
step();
});
return {
circleLeft,
circleRight,
};
},};</script>
效果如下:
以上就是css怎么实现环形循环进度条的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- 如何在 Java 中获取当前时间戳?(java怎么获取当前时间戳)
- 如何简化 Java 的 DAO 层开发流程?(Java的DAO层怎样简化开发流程)
- 深入解析PHP中数据类型的转换技巧
- 在处理速度方面,C++与 Java 究竟谁更快?(c++与java处理速度哪个更快)
- Java Zuul 如何在认证授权中进行应用?(java zuul在认证授权中的应用)
- Uncomtrade数据库免费版本查询指南
- Java Lombok 使用为何不生效及解决办法(java lombok使用不生效怎么解决)
- 如何有效修复uncomtrade数据库
- Java 中接口与抽象类的区别究竟有哪些?(java中接口和抽象类的区别是什么)
- 如何高效地部署 Java 应用程序?(如何部署Java应用程序)
猜你喜欢
AI推送时光机css怎么实现环形循环进度条
前端开发2023-05-14
css如何实现环形循环进度条
前端开发2023-07-05
JavaScriptcanvas实现环形渐变进度条
前端开发2024-04-02
Android实现环形进度条代码
前端开发2022-06-06
Android实现环形进度条的实例
前端开发2022-06-06
JavaScript怎么实现可动的canvas环形进度条
前端开发2023-06-29
微信小程序怎么实现环形进度条
前端开发2023-07-02
自定义视图view怎么实现环形进度条
前端开发2023-07-05
微信小程序实现环形进度条
前端开发2024-04-02
如何利用canvas实现环形进度条
前端开发2023-06-09
JavaScript实现可动的canvas环形进度条
前端开发2024-04-02
python怎么使用tqdm库实现循环打印进度条
前端开发2023-05-21
CSS3怎么制作圆环形进度条
前端开发2024-04-02
python使用tqdm库实现循环打印进度条
前端开发2023-05-18
css怎么实现圆形渐变进度条效果
前端开发2023-06-08
canvas如何实现有递增动画的环形进度条
前端开发2023-06-09
CSS怎么实现进度条和订单进度条
前端开发2024-04-02
Android项目中使用Progress实现一个环形进度条
前端开发2023-05-31
咦!没有更多了?去看看其它编程学习网 内容吧