vue環(huán)形進(jìn)度條組件實(shí)例應(yīng)用
在做項(xiàng)目的時(shí)候,最好只使用一套組件庫(kù),但是很多時(shí)候我們的組件庫(kù)里面沒(méi)有我們需要的組件,這個(gè)時(shí)候我們還是需要自己寫(xiě)組件了,vux里面就沒(méi)有環(huán)形進(jìn)度條組件,所以需要自己寫(xiě)一個(gè)。
查找資料后發(fā)現(xiàn)了一個(gè)很好的實(shí)現(xiàn)方式,通過(guò)svg來(lái)實(shí)現(xiàn),以前的時(shí)候?qū)W過(guò)一點(diǎn)svg但是沒(méi)有怎么深入了解過(guò)。。?,F(xiàn)在看來(lái)真是罪過(guò),給出參考鏈接
https://segmentfault.com/a/1190000008149403
可以看出原作者使用了兩種方式,我們選擇了第二種,簡(jiǎn)單,而且好擴(kuò)展??梢钥吹絪vg就想是canvas一樣進(jìn)行繪圖。原文已經(jīng)講得很詳細(xì)了,這里就附上自己寫(xiě)的組件吧。伸手黨們也能愉快一點(diǎn)。
<template>
<svg :height="option.size" :width="option.size" x-mlns="http://www.w3.org/200/svg">
<circle
:r="option.radius"
:cx="option.cx"
:cy="option.cy"
:stroke="option.outerColor"
:stroke-width="option.strokeWidth"
fill="none"
stroke-linecap="round"/>
<circle
id="progressRound"
:stroke-dasharray="completenessHandle"
:r="option.radius"
:cx="option.cx"
:cy="option.cy"
:stroke-width="option.strokeWidth"
:stroke="option.innerColor"
fill="none"
class="progressRound"
/>
</svg>
</template>
<script>
export default {
name: 'CommonLoopProgress',
props: {
completeness: {
type: Number,
required: true,
},
progressOption: {
type: Object,
default: () => {},
},
},
data () {
return {
}
},
computed: {
completenessHandle () {
let circleLength = Math.floor(2 * Math.PI * this.option.radius)
let completenessLength = this.completeness * circleLength
return `${completenessLength},100000000`
},
option () {
// 所有進(jìn)度條的可配置項(xiàng)
let baseOption = {
radius: 20,
strokeWidth: 5,
outerColor: '#E6E6E6',
innerColor: '#FFDE00',
}
Object.assign(baseOption, this.progressOption)
// 中心位置自動(dòng)生成
baseOption.cy = baseOption.cx = baseOption.radius + baseOption.strokeWidth
baseOption.size = (baseOption.radius + baseOption.strokeWidth) * 2
return baseOption
},
},
}
</script>
<style scoped lang='stylus'>
@import '~stylus/_variables.styl';
@import '~stylus/_mixins.styl';
.progressRound {
transform-origin: center;
transform: rotate(-90deg);
transition: stroke-dasharray 0.3s ease-in;
}
</style>
修改了原文中的一些不好的命名方式,并且讓我們的組件方便配置,可以自由一點(diǎn)。
以上就是本次知識(shí)點(diǎn)的全部?jī)?nèi)容,感謝大家對(duì)腳本之家的支持。
相關(guān)文章
使用vue實(shí)現(xiàn)多規(guī)格選擇實(shí)例(SKU)
這篇文章主要介紹了使用vue實(shí)現(xiàn)多規(guī)格選擇實(shí)例(SKU),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Vue自定義省市區(qū)三級(jí)聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了Vue自定義省市區(qū)三級(jí)聯(lián)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
vue實(shí)戰(zhàn)中的一些實(shí)用小魔法匯總
這篇文章主要給大家介紹了關(guān)于vue實(shí)戰(zhàn)中一些實(shí)用小魔法的相關(guān)資料,這些技巧和竅門,可以幫助你成為更好的Vue開(kāi)發(fā)人員,需要的朋友可以參考下2021-06-06
在vue中使用eacharts創(chuàng)建graph關(guān)系圖方式
這篇文章主要介紹了在vue中使用eacharts創(chuàng)建graph關(guān)系圖方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
詳解Vue中數(shù)組和對(duì)象更改后視圖不刷新的問(wèn)題
這篇文章主要介紹了Vue中數(shù)組和對(duì)象更改后視圖不刷新的問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
vue項(xiàng)目啟動(dòng)命令個(gè)人學(xué)習(xí)記錄
最近想要學(xué)習(xí)vue,正好看到資料,如何通過(guò)命令創(chuàng)建vue項(xiàng)目的方法,就留個(gè)筆記,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目啟動(dòng)命令的相關(guān)資料,需要的朋友可以參考下2023-02-02

