CSS3可以實現很多很酷炫的效果,其中實現環形進度條就是一個很好的例子。
.circular-progress { position: relative; width: 100px; height: 100px; border-radius: 50%; background-color: #eee; } .circular-progress::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-radius: 50%; clip: rect(0, 50px, 100px, 0); background-color: #2962FF; transform: rotate(-45deg); } .circular-progress::after { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-radius: 50%; clip: rect(0, 50px, 100px, 0); background-color: #eee; } .circular-progress.active::after { background-color: #2962FF; transform: rotate(45deg); transition: all .5s ease; } .circular-progress.active .circular-progress__pct { color: #2962FF; transition: all .5s ease; }
以上是實現環形進度條的CSS代碼,其中通過兩個偽元素:before和:after來實現。
其中:before是整個圓環中進度的部分,通過clip屬性來剪切顯示它的一部分,transform: rotate(-45deg)是將其旋轉45度,變為從左上方開始。
:after是圓環中進度結束的部分,clip屬性也是剪切顯示它的一部分,clip: rect(0, 50px, 100px, 0),其中0代表上邊界,50px代表右邊界,100px代表下邊界,0代表左邊界。然后給它設置一個背景顏色,和環形進度條的主體顏色相同,這樣看起來就像是一個沒有進度的環形進度條了。
當我們想要讓進度條動起來時,可以通過添加.active類來觸發CSS3過渡效果。這時:before將會旋轉45度,:after也將被填充上背景色來呈現出進度部分的效果。同時可使用JavaScript來獲取百分比,再將其寫入一段P標簽中,隨著進度的更新,這段文字也將發生變化。
80%
最后,結合HTML和CSS3,我們就可以實現一個簡單而又實用的環形進度條了。