溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

css怎樣繪制扇形進(jìn)度條

發(fā)布時(shí)間:2021-02-18 11:33:04 來源:億速云 閱讀:471 作者:小新 欄目:web開發(fā)

小編給大家分享一下css怎樣繪制扇形進(jìn)度條,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

前言:

本文為大家分享了利用純css繪制圓環(huán)進(jìn)度條的方法,在使用本文中的方法時(shí),建議先了解圓心角、弧度制、三角函數(shù)等知識(shí)。

為實(shí)現(xiàn)如下效果嘔心瀝血:

css怎樣繪制扇形進(jìn)度條

當(dāng)然你可以擁抱 Svg...在此分享如何純 Css 打造圓環(huán)進(jìn)度條,只需三步!

css怎樣繪制扇形進(jìn)度條

此物乃 2 + 1 夾心餅干,藍(lán)綠色部分為果醬。顯而易見餅干為兩個(gè)削成了圓形的 div,我們重點(diǎn)演示果醬是怎么制作的:

css怎樣繪制扇形進(jìn)度條

如圖所示,大扇形由 6 個(gè)小扇形構(gòu)成,每一小扇形占整個(gè)圓餅的 1/15,大扇形占整個(gè)圓餅的 6/15。我們只需構(gòu)造一個(gè)扇形單元,將其復(fù)制 6 份后旋轉(zhuǎn)相應(yīng)角度連接至一起即可。

如何構(gòu)造扇形?用三角形偽裝...

css怎樣繪制扇形進(jìn)度條

三角形的寬高如何計(jì)算?假定圓半徑 $radius 為 100px,等分?jǐn)?shù) $count 為 15。則小扇形的圓心角為 360deg / 15,三角形的高為 100px,寬為 2 * 100px * tan(360deg / 15 / 2)。其中 360deg / 15 / 2 轉(zhuǎn)化弧度制為 PI / 15(PI == 360deg / 2)。

span {
    width: 0;
    height: 0;
    border: $radius solid transparent;
    $borderWidth: tan(pi() / $count) * $radius;
    border-left-width: $borderWidth;
    border-right-width: $borderWidth;
}

數(shù)學(xué)欠佳的同學(xué)請(qǐng)自行科普...

對(duì)于 $count 為 1 或 2 的情況需特殊處理,因?yàn)?tan(PI) 及 tan(PI / 2) 為無窮值,不了解的同學(xué)請(qǐng)研究正切函數(shù)圖像:

css怎樣繪制扇形進(jìn)度條

相關(guān)代碼(其中 $diameter = 2 * $radius 為圓直徑):

span {
    @if $count == 1 {
        width: $diameter;
        height: $diameter;
    } @else if $count == 2 {
        width: $diameter;
        height: $radius;
    } @else {
        width: 0;
        height: 0;
        border: $radius solid transparent;
        $borderWidth: tan(pi() / $count) * $radius;
        border-left-width: $borderWidth;
        border-right-width: $borderWidth;
    }
}

最后,復(fù)制并逐一旋轉(zhuǎn)扇形單元:

@for $index from 0 to $count {
    span:nth-child(#{$index + 1}) {
        $transform: translate(-50%, 0) rotate(360deg / $count / 2 + 360deg * $index / $count);
        $origin: if($count == 2, bottom, center);
        -webkit-transform: $transform;
                transform: $transform;
        -webkit-transform-origin: $origin;
                transform-origin: $origin;
    }
}

果醬制作完畢,其它點(diǎn)綴請(qǐng)自行添加嘍...本例完整代碼在此。

2017/11/14 續(xù)更

由于本例引入了三角函數(shù)等數(shù)學(xué)運(yùn)算,使用 Sass 預(yù)編譯。未安裝 Sass 的同學(xué)可下載經(jīng)編譯的 源碼 開啟 sector.html 查看效果。

安裝 Sass 請(qǐng)參考 sunmengyuan.github.io/garden/2017… 文章末尾的安裝教程。

本例調(diào)試方法:

cd sector
sass --watch style.scss:style.css --debug-info

看完了這篇文章,相信你對(duì)“css怎樣繪制扇形進(jìn)度條”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI