css實作環形循環進度條的方法:1、建立一個最外層的父級圓環;2、透過「clip-path」畫出兩個半圓,並絕對定位覆蓋在父級圓環;3、小於50時,透過旋轉右半圓,慢慢透露出父級圓環的顏色;4、大於50時,設定右半圓旋轉度數為0,修改其border顏色來實現前50的效果,其次再旋轉左側半圓即可達到效果。
本教學操作環境:Windows10系統、CSS3版、DELL G3電腦
css怎麼實作環形迴圈進度條?
首先,我們先來看一個靜態進度條
第一步當然是先實作一個最外層的父級圓環。
其次是透過 clip-path
畫出兩個半圓,並絕對定位覆蓋在父級圓環。
小於50的時候,我們只需要透過旋轉右半圓,慢慢透露出父級圓環的顏色,即可達到效果。
大於50的時候,我們先按照流程走前面50,再設定右半圓旋轉度數為0,修改其border顏色來實現前50的效果,其次再旋轉左側半圓即可達到效果。
<template> <div> <div></div> <div></div> <div> <span>成功率</span> <span>85%</span> </div> </div></template><script>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>.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> <div></div> <div></div> <div> <span>成功率</span> <span>85%</span> </div> </div></template><script>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影片教學》
以上是css怎麼實現環形循環進度條的詳細內容。更多資訊請關注PHP中文網其他相關文章!