App下載

在前端使用svg生成環(huán)形進(jìn)度條方法案例詳解 !

給你一口甜 2021-08-07 16:48:08 瀏覽數(shù) (3128)
反饋

下面這個(gè)是之前在項(xiàng)目中遇到一個(gè)環(huán)形進(jìn)度條的需求,要求能實(shí)時(shí)更新進(jìn)度,那么今天小編就和大家講講“在前端使用svg生成環(huán)形進(jìn)度條方法案例詳解 !”這個(gè)問(wèn)題吧!

具體效果如下圖:

代碼非常簡(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)畫控制:

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)劃線的圖案范式,即定義虛線每段長(zhǎng)度即虛線間間隔,數(shù)與數(shù)之間用逗號(hào)或者空白隔開,指定短劃線和缺口的長(zhǎng)度。如果提供了奇數(shù)個(gè)值,則這個(gè)值的數(shù)列重復(fù)一次,從而變成偶數(shù)個(gè)值。

stroke-dashoffset

標(biāo)識(shí)的是整個(gè)路徑的偏移值。

通過(guò)控制虛線的間隔與偏移值,便可以行程各種各樣的線條動(dòng)畫,當(dāng)然我們還可以通過(guò)js控制,如下:

let path = document.querySelector('#path');
// 可獲取路徑的長(zhǎng)度
let len = path.getTotalLength();
path.style.cssText = `stroke-dasharray:"${number}"`;

那么以上就是“在前端使用svg生成環(huán)形進(jìn)度條方法案例詳解 !”這方面的全部?jī)?nèi)容了,希望對(duì)大家的學(xué)習(xí)有所幫助,喜歡前端的小伙伴們也可以使用W3Cschool進(jìn)行基礎(chǔ)的全面學(xué)習(xí)。


0 人點(diǎn)贊