如何僅使用一個 DIV 配合 CSS 實現(xiàn)餅狀圖?下面本篇文章就來給大家看看實現(xiàn)方法,希望對大家有所幫助。
本文為譯文「意譯」
完整的代碼請滑到文末。
我們只使用一個div
,僅采用css
實現(xiàn)餅狀圖。
HTMl 結(jié)構(gòu)
<div class="pie" style="--p:60;--b:10px;--c:purple;">60%</div>
我們添加了幾個 css
的變量:
--p
:進度條的百分比(純數(shù)字,不帶%),餅狀圖值和div
內(nèi)容(帶%)一致。--b
:邊框厚度的值--c
:邊框的主體顏色
本文使用的是簡寫的變量,在生產(chǎn)環(huán)境中,為了達到可讀性,我們應(yīng)該使用--p -> --percentage
, --b -> --border-thickness
, --c -> --main-color
來表示。
Pie 的基本設(shè)置
我們?yōu)轱灎顖D設(shè)定基本的樣式。
.pie { --w: 150px; // --w -> --width width: var(--w); aspect-ratio: 1; // 縱橫比,1 說明是正方形 display: inline-grid; place-content: center; margin: 5px; font-size: 25px; font-weight: bold; font-family: sans-serif; }
上面我們使用了 aspect-ratio: 1;
保證 div
是正方形,當(dāng)然你也可以使用 height: var(--w)
達到效果。
接下來,我們使用偽元素實現(xiàn)簡單的餅狀圖:
.pie:before { content: "", position: absoute; border-radius: 50%; inset: 0; // 知識點 1 background: conic-gradient(var(--c) calc(var(--p)*1%),#0000 0); // 知識點 2 }