之前在項(xiàng)目中遇到一個(gè)環(huán)形進(jìn)度條的需求,要求能實(shí)時(shí)更新進(jìn)度,腦海中瞬間便蹦出css,svg,canvas3中方案,對(duì)于3種方案?jìng)€(gè)人更偏向于svg,用法簡(jiǎn)單,代碼量也很少,同時(shí)也便于實(shí)時(shí)控制。具體效果如下圖:

代碼非常簡(jiǎn)單:
<svg width="150px" height="150px" class="svg"> <circle r="70" cy="75" cx="75" stroke-width="8" stroke="#EAEFF4" stroke-linejoin="round" stroke-linecap="round" fill="none"/> <circle class="progress" r="70" cy="75" cx="75" stroke-width="8" stroke="#1593FF" stroke-linejoin="round" stroke-linecap="round" fill="none" stroke-dashoffset="0px" stroke-dasharray="471px" /></svg>
為了便于演示,我們先用css動(dòng)畫(huà)控制:
svg { transform: rotate(-90deg);}.progress { animation: rotate 1500ms linear both;}@keyframes rotate { from { stroke-dashoffset: 471px; } to { stroke-dashoffset: 0px; }}實(shí)現(xiàn)原理
實(shí)現(xiàn)原理非常簡(jiǎn)單,就是應(yīng)用svg的stroke-dashoffset和stroke-dasharray屬性。
stroke-dasharray
官方解釋為可控制用來(lái)描邊的點(diǎn)劃線(xiàn)的圖案范式,即定義虛線(xiàn)每段長(zhǎng)度即虛線(xiàn)間間隔,數(shù)與數(shù)之間用逗號(hào)或者空白隔開(kāi),指定短劃線(xiàn)和缺口的長(zhǎng)度。如果提供了奇數(shù)個(gè)值,則這個(gè)值的數(shù)列重復(fù)一次,從而變成偶數(shù)個(gè)值。
stroke-dashoffset
標(biāo)識(shí)的是整個(gè)路徑的偏移值。
通過(guò)控制虛線(xiàn)的間隔與偏移值,便可以行程各種各樣的線(xiàn)條動(dòng)畫(huà),當(dāng)然我們還可以通過(guò)js控制,如下:
let path = document.querySelector('#path');// 可獲取路徑的長(zhǎng)度let len = path.getTotalLength();path.style.cssText = `stroke-dasharray:"${number}"`;以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選