Vue實(shí)現(xiàn)動(dòng)態(tài)圓環(huán)百分比進(jìn)度條
最近在開(kāi)發(fā)小程序的時(shí)候,碰到一個(gè)實(shí)現(xiàn)圓環(huán)百分比進(jìn)度條的需求,類似如下設(shè)計(jì)圖:
小白的我感覺(jué)實(shí)現(xiàn)起來(lái)有難度,于是上百度看看別人是怎么做的,結(jié)果沒(méi)找到一個(gè)滿意的,要不是靜態(tài)的實(shí)現(xiàn),就是需要用到比較多的DOM操作,小程序還是盡量避免直接操作DOM。
下面是我以Vue組件形式做的一個(gè)動(dòng)態(tài)的實(shí)現(xiàn),先上效果圖:
效果
實(shí)現(xiàn)步驟
畫一個(gè)餅圖
.pie { display: inline-block; position: relative; width: 150px; height: 150px; margin-top: 40px; border-radius: 50%; background: #ccc; background-image: linear-gradient(to right, transparent 50%, #4479FD 0); color: transparent; text-align: center; }
實(shí)現(xiàn)占比效果
通過(guò)添加偽元素遮擋和移動(dòng)實(shí)現(xiàn),代碼如下:
.pie::before { content: ''; position: absolute; top: 0; left: 50%; width: 50%; height: 100%; border-radius: 0 100% 100% 0 / 50%; background-color: inherit; transform-origin: left; animation: spin 5s linear infinite, bg 10s step-end infinite; } @keyframes spin { to { transform: rotate(.5turn); } } @keyframes bg { 50% { background: #4479FD; } }
使用CSS動(dòng)畫延遲屬性
將上面的animation動(dòng)畫時(shí)間分別改為50, 100,這樣可以直接在animation-delay傳入相應(yīng)的延遲秒數(shù),比如-60s則是顯示在百分之六十
animation-play-state: paused; animation-delay: -60s;
實(shí)現(xiàn)圓環(huán)形狀
直接在div里加上一個(gè)定位的div
<div class="pie"> <div class="pie-inner"> {{num}}% </div> </div>
加上一個(gè)勻速動(dòng)畫
startAnimate (step, limit, speed) { setTimeout(() => { // num 為百分比 if (this.num < limit) { this.num += step this.startAnimate(step, limit, speed) } else { this.num = limit } }, speed) }
給animation-delay綁定計(jì)算屬性
實(shí)時(shí)根據(jù)num轉(zhuǎn)化為相應(yīng)的延遲秒數(shù)
computed: { delay () { return `-${this.num}s` } }
總結(jié)
至此,一個(gè)動(dòng)態(tài)的圓環(huán)百分比進(jìn)度條基本實(shí)現(xiàn)了,還不是很完善,有什么意見(jiàn)或者疑問(wèn)歡迎提出來(lái)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Springboot項(xiàng)目中運(yùn)用vue+ElementUI+echarts前后端交互實(shí)現(xiàn)動(dòng)態(tài)圓環(huán)圖(推薦)
- Springboot運(yùn)用vue+echarts前后端交互實(shí)現(xiàn)動(dòng)態(tài)圓環(huán)圖
- vue圓環(huán)百分比進(jìn)度條組件功能的實(shí)現(xiàn)
- Vue實(shí)現(xiàn)圓環(huán)進(jìn)度條的示例
- vue動(dòng)態(tài)繪制四分之三圓環(huán)圖效果
- vue中使用echarts制作圓環(huán)圖的實(shí)例代碼
- vue使用canvas繪制圓環(huán)
相關(guān)文章
淺談Vue為什么不能檢測(cè)數(shù)組變動(dòng)
這篇文章主要介紹了淺談Vue為什么不能檢測(cè)數(shù)組變動(dòng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10使用Vue和React分別實(shí)現(xiàn)錨點(diǎn)定位功能
這篇文章主要為大家詳細(xì)介紹了如何使用Vue和React分別實(shí)現(xiàn)錨點(diǎn)定位功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以學(xué)習(xí)一下2024-01-01vue給數(shù)組中對(duì)象排序 sort函數(shù)的用法
這篇文章主要介紹了vue給數(shù)組中對(duì)象排序 sort函數(shù)的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09vue項(xiàng)目實(shí)現(xiàn)國(guó)際化的基本思路與詳細(xì)步驟
國(guó)際化是指項(xiàng)目能夠根據(jù)不同國(guó)家的語(yǔ)言進(jìn)行轉(zhuǎn)換,便于不同國(guó)家的用戶使用,這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目實(shí)現(xiàn)國(guó)際化的基本思路與詳細(xì)步驟,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04vue實(shí)現(xiàn)類似淘寶商品評(píng)價(jià)頁(yè)面星級(jí)評(píng)價(jià)及上傳多張圖片功能
最近在寫一個(gè)關(guān)于vue的商城項(xiàng)目,然后集成在移動(dòng)端中,開(kāi)發(fā)需求中有一界面,類似淘寶商城評(píng)價(jià)界面!接下來(lái)通過(guò)本文給大家分享vue實(shí)現(xiàn)類似淘寶商品評(píng)價(jià)頁(yè)面星級(jí)評(píng)價(jià)及上傳多張圖片功能,需要的朋友參考下吧2018-10-10Vue Element-ui實(shí)現(xiàn)樹(shù)形控件節(jié)點(diǎn)添加圖標(biāo)詳解
這篇文章主要為大家介紹了Element-ui實(shí)現(xiàn)樹(shù)形控件節(jié)點(diǎn)添加圖標(biāo),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2021-11-11關(guān)于Elementui中toggleRowSelection()方法實(shí)現(xiàn)分頁(yè)切換時(shí)記錄之前選中的狀態(tài)
這篇文章主要介紹了關(guān)于Elementui中toggleRowSelection()方法實(shí)現(xiàn)分頁(yè)切換時(shí)記錄之前選中的狀態(tài),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03