首頁 >web前端 >前端問答 >css怎麼實現環形循環進度條

css怎麼實現環形循環進度條

藏色散人
藏色散人原創
2023-01-31 10:05:092428瀏覽

css實作環形循環進度條的方法:1、建立一個最外層的父級圓環;2、透過「clip-path」畫出兩個半圓,並絕對定位覆蓋在父級圓環;3、小於50時,透過旋轉右半圓,慢慢透露出父級圓環的顏色;4、大於50時,設定右半圓旋轉度數為0,修改其border顏色來實現前50的效果,其次再旋轉左側半圓即可達到效果。

css怎麼實現環形循環進度條

本教學操作環境:Windows10系統、CSS3版、DELL G3電腦

css怎麼實作環形迴圈進度條?

#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: &#39;CircleProgress&#39;,
    setup() {
        const renderRightRate = (rate: number) => {
            if (rate < 50) {
                return &#39;transform: rotate(&#39; + 3.6 * rate + &#39;deg);&#39;;
            } else {
                return &#39;transform: rotate(0);border-color: #54c4fd;&#39;;
            }
        };

        const renderLeftRate = (rate: number) => {
            if (rate >= 50) {
                return &#39;transform: rotate(&#39; + 3.6 * (rate - 50) + &#39;deg);&#39;;
            }
        };
        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怎麼實現環形循環進度條

#二、動態進度條

#動態的css其實和靜態的是一樣的。
這個例子是寫的固定的進度,你們也可以根據自己的需求變換。

<template>
    <div>
        <div></div>
        <div></div>
        <div>
            <span>成功率</span>
            <span>85%</span>
        </div>
    </div></template><script>import { onMounted, ref, Ref } from &#39;vue&#39;;export default {
    name: &#39;CircleProgress&#39;,
    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 = &#39;rotate(&#39; + 3.6 * percent + &#39;deg)&#39;;
            } else {
                circleRight.value.style.transform = &#39;rotate(0)&#39;;
                circleRight.value.style.borderColor = &#39;#54c4fd&#39;;
                circleLeft.value.style.transform = &#39;rotate(&#39; + 3.6 * (percent - 50) + &#39;deg)&#39;;
            }
            if (percent < 85) {
                window.clearTimeout(timer);
                timer = window.setTimeout(step, 20);
            }
        };

        onMounted(() => {
            step();
        });

        return {
            circleLeft,
            circleRight,
        };
    },};</script>

效果如下:
css怎麼實現環形循環進度條

#推薦學習:《css影片教學

以上是css怎麼實現環形循環進度條的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn