您好,登錄后才能下訂單哦!
本篇內容主要講解“css如何實現環形循環進度條”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“css如何實現環形循環進度條”吧!
css實現環形循環進度條的方法:1、創建一個最外層的父級圓環;2、通過“clip-path”畫出兩個半圓,并絕對定位覆蓋在父級圓環;3、小于50時,通過旋轉右半圓,慢慢透露出父級圓環的顏色;4、大于50時,設置右半圓旋轉度數為0,修改其border顏色來實現前50的效果,其次再旋轉左側半圓即可達到效果。
首先,我們先看一個靜態進度條
第一步當然是先實現一個最外層的父級圓環。
其次是通過 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如何實現環形循環進度條”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。