欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue中使用js制作進度條式數(shù)據(jù)對比動畫

 更新時間:2022年03月27日 14:10:20   作者:doit_damao  
這篇文章主要為大家詳細介紹了Vue中使用js制作進度條式數(shù)據(jù)對比動畫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Vue中使用js制作進度條式數(shù)據(jù)對比動畫的具體代碼,供大家參考,具體內(nèi)容如下

實現(xiàn)的效果:(初始化以及瀏覽器resize的時候兩側(cè)的條形為向兩側(cè)遞增的動畫,其中兩端的數(shù)字也是遞增的動畫)

HTML部分:

<div class="no-ivatargo-chart-b">
? <div class="investment-ability">
? ? <div class="title">
? ? ? <span>您的投資能力分析</span>
? ? </div>
? ? <div class="investment-ability-picture-outer-container">
? ? ? <div class="investment-ability-picture-container">
? ? ? ? <div class="investment-ability-picture-header"
? ? ? ? ? ? ?ref="allLine">
? ? ? ? ? <span>我</span>
? ? ? ? ? <span>平均</span>
? ? ? ? </div>
? ? ? ? <div class="investment-ability-picture"
? ? ? ? ? ? ?v-for="(item, index) in abilityArr"
? ? ? ? ? ? ?:key="index">
? ? ? ? ? <div class="investment-ability-picture-top">
? ? ? ? ? ? <div class="investment-left">
? ? ? ? ? ? ? <div class="left-icon-outer">
? ? ? ? ? ? ? ? <div class="left-icon-inner"></div>
? ? ? ? ? ? ? </div>
? ? ? ? ? ? ? <span>{{item.title}}</span>
? ? ? ? ? ? </div>
? ? ? ? ? ? <div class="investment-right">
? ? ? ? ? ? ? <div class="investment-info">
? ? ? ? ? ? ? ? <span class="my-color">{{item.score | scoreFilter}}</span>
? ? ? ? ? ? ? ? <div class="all-line">
? ? ? ? ? ? ? ? ? <div class="my-line"
? ? ? ? ? ? ? ? ? ? ? ?:style="{'width': item.myWidth}"></div>
? ? ? ? ? ? ? ? ? <div class="other-line"
? ? ? ? ? ? ? ? ? ? ? ?:style="{'width': item.averageWidth}"></div>
? ? ? ? ? ? ? ? </div>
? ? ? ? ? ? ? ? <span class="average-color">{{item.average | scoreFilter}}</span>
? ? ? ? ? ? ? </div>
? ? ? ? ? ? </div>
? ? ? ? ? </div>
? ? ? ? </div>
? ? ? ? <div class="investment-ability-picture-footer">
? ? ? ? ? <span>100</span>
? ? ? ? ? <span>0</span>
? ? ? ? ? <span>100</span>
? ? ? ? </div>
? ? ? </div>
? ? </div>
? </div>
</div>
filters: {
? scoreFilter (val) {
? ? if (!isNaN(val)) {
? ? ? return Number(val) < 10 ? `0${parseInt(val)}` : parseInt(val)
? ? } else {
? ? ? return ''
? ? }
? }
}

CSS部分:

.no-ivatargo-chart-b {
? width: 100%;
? overflow: hidden;
? display: flex;
? flex-direction: column;
? font-size: 14.76px;
? color: #bfbfbf;
? background-color: #0f1318;
? .title {
? ? display: flex;
? ? align-items: center;
? ? font-size: 17.22px;
? ? color: #bfbfbf;
? ? margin-bottom: 15px;
? }
? .investment-ability-picture-header {
? ? width: 400px;
? ? margin-left: 130px;
? ? display: flex;
? ? align-items: center;
? ? justify-content: space-around;
? ? margin-bottom: 10px;
? ? color: #fff;
? }
? .investment-ability-picture-outer-container {
? ? display: flex;
? ? justify-content: center;
? ? align-items: center;
? ? height: calc(100% - 50px);
? ? .investment-ability-picture-container {
? ? ? display: flex;
? ? ? flex-direction: column;
? ? ? .investment-ability-picture {
? ? ? ? display: flex;
? ? ? ? flex-direction: column;
? ? ? ? margin-bottom: 10px;
? ? ? ? .investment-ability-picture-top {
? ? ? ? ? display: flex;
? ? ? ? ? .investment-left {
? ? ? ? ? ? font-size: 14.76px;
? ? ? ? ? ? color: #bfbfbf;
? ? ? ? ? ? width: 100px;
? ? ? ? ? ? display: flex;
? ? ? ? ? ? align-items: center;
? ? ? ? ? ? .left-icon-outer {
? ? ? ? ? ? ? width: 14px;
? ? ? ? ? ? ? height: 14px;
? ? ? ? ? ? ? background-color: #3fb050;
? ? ? ? ? ? ? border-radius: 50%;
? ? ? ? ? ? ? position: relative;
? ? ? ? ? ? ? margin-right: 5px;
? ? ? ? ? ? ? .left-icon-inner {
? ? ? ? ? ? ? ? position: absolute;
? ? ? ? ? ? ? ? width: 5px;
? ? ? ? ? ? ? ? height: 5px;
? ? ? ? ? ? ? ? top: 50%;
? ? ? ? ? ? ? ? left: 50%;
? ? ? ? ? ? ? ? transform: translate(-50%, -50%);
? ? ? ? ? ? ? ? background-color: #fff;
? ? ? ? ? ? ? ? border-radius: 50%;
? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? }
? ? ? ? ? .investment-right {
? ? ? ? ? ? display: flex;
? ? ? ? ? ? align-items: center;
? ? ? ? ? ? justify-content: space-between;
? ? ? ? ? ? .investment-info {
? ? ? ? ? ? ? display: flex;
? ? ? ? ? ? ? align-items: center;
? ? ? ? ? ? ? justify-content: space-between;
? ? ? ? ? ? ? .all-line {
? ? ? ? ? ? ? ? width: 400px;
? ? ? ? ? ? ? ? height: 10px;
? ? ? ? ? ? ? ? background-color: #57606e;
? ? ? ? ? ? ? ? border-radius: 2px;
? ? ? ? ? ? ? ? margin-left: 10px;
? ? ? ? ? ? ? ? margin-right: 10px;
? ? ? ? ? ? ? ? position: relative;
? ? ? ? ? ? ? ? .my-line {
? ? ? ? ? ? ? ? ? width: 0;
? ? ? ? ? ? ? ? ? height: 10px;
? ? ? ? ? ? ? ? ? position: absolute;
? ? ? ? ? ? ? ? ? top: 0;
? ? ? ? ? ? ? ? ? right: 200px;
? ? ? ? ? ? ? ? ? background-color: #f5a623;
? ? ? ? ? ? ? ? ? border-top-left-radius: 2px;
? ? ? ? ? ? ? ? ? border-bottom-left-radius: 2px;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? .other-line {
? ? ? ? ? ? ? ? ? width: 0;
? ? ? ? ? ? ? ? ? height: 10px;
? ? ? ? ? ? ? ? ? position: absolute;
? ? ? ? ? ? ? ? ? top: 0;
? ? ? ? ? ? ? ? ? left: 200px;
? ? ? ? ? ? ? ? ? background-color: #1890ff;
? ? ? ? ? ? ? ? ? border-top-right-radius: 2px;
? ? ? ? ? ? ? ? ? border-bottom-right-radius: 2px;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? }
? ? ? ? ? ? ? .my-color {
? ? ? ? ? ? ? ? width: 20px;
? ? ? ? ? ? ? ? color: #f5a623;
? ? ? ? ? ? ? }
? ? ? ? ? ? ? .average-color {
? ? ? ? ? ? ? ? width: 20px;
? ? ? ? ? ? ? ? color: #1890ff;
? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? }
? ? ? ? }
? ? ? ? .investment-ability-picture-bottom {
? ? ? ? ? display: flex;
? ? ? ? ? flex-direction: column;
? ? ? ? ? background-color: #ccc;
? ? ? ? ? width: 400px;
? ? ? ? ? margin-left: 130px;
? ? ? ? ? padding: 5px;
? ? ? ? ? color: #000;
? ? ? ? }
? ? ? }
? ? }
? }
? .investment-ability-picture-footer {
? ? width: 400px;
? ? margin-left: 130px;
? ? display: flex;
? ? align-items: center;
? ? justify-content: space-between;
? ? color: #fff;
? }
}

JS部分:

1.子組件當中

mounted () {
? let that = this
? window.onresize = () => {
? ? clearTimeout(that.resizeTimer)
? ? that.resizeTimer = setTimeout(() => {
? ? ? that.handleGetAllWidth()
? ? }, 1000)
? }
? this.$nextTick(() => {
? ? clearTimeout(this.resizeTimerB)
? ? this.resizeTimerB = setTimeout(() => {
? ? ? this.handleGetAllWidth()
? ? }, 200)
? })
}
?
// methods當中
handleGetAllWidth () {
? this.$emit('getAllWidth', this.$refs.allLine.offsetWidth)
}

2.父組件當中

getAllLineWidth (data) {
? this.allLineWidth = data
? this.calculateIvatargo()
},
// 給條形圖添加計算寬度,并形成動畫
calculateIvatargo () {
? this.myTimerArr.forEach((value, index) => {
? ? clearInterval(value)
? })
? this.averageTimerArr.forEach((value, index) => {
? ? clearInterval(value)
? })
? this.myTimerArr = []
? this.averageTimerArr = []
? let myVal = []
? let averageVal = []
? this.myAbilityArr.forEach((value, index) => {
? ? myVal[index] = 0
? ? averageVal[index] = 0
? ? this.myTimerArr[index] = setInterval(() => {
? ? ? if (myVal[index] > Number(this.allLineWidth) * Number(value.score) / 200 || !value.score) {
? ? ? ? clearInterval(this.myTimerArr[index])
? ? ? ? value.score ? myVal[index] = Number(this.allLineWidth) * Number(value.score) / 200 : myVal[index] = 0
? ? ? ? this.$set(value, 'myWidth', myVal[index] + 'px')
? ? ? ? this.$set(value, 'myNum', value.score)
? ? ? } else {
? ? ? ? myVal[index]++
? ? ? ? this.$set(value, 'myWidth', myVal[index] + 'px')
? ? ? ? this.$set(value, 'myNum', myVal[index] / 2)
? ? ? }
? ? }, 5)
? ? this.averageTimerArr[index] = setInterval(() => {
? ? ? if (averageVal[index] > Number(this.allLineWidth) * Number(value.average) / 200 || !value.average) {
? ? ? ? clearInterval(this.averageTimerArr[index])
? ? ? ? value.average ? averageVal[index] = Number(this.allLineWidth) * Number(value.average) / 200 : averageVal[index] = 0
? ? ? ? this.$set(value, 'averageWidth', averageVal[index] + 'px')
? ? ? ? this.$set(value, 'averageNum', value.average)
? ? ? } else {
? ? ? ? averageVal[index]++
? ? ? ? this.$set(value, 'averageWidth', averageVal[index] + 'px')
? ? ? ? this.$set(value, 'averageNum', averageVal[index] / 2)
? ? ? }
? ? }, 5)
? })
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue + Webpack + Vue-loader學習教程之相關(guān)配置篇

    Vue + Webpack + Vue-loader學習教程之相關(guān)配置篇

    這篇文章主要介紹了關(guān)于Vue + Webpack + Vue-loader的相關(guān)配置篇,文中通過示例代碼介紹的非常詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • vue中如何配置proxy代理

    vue中如何配置proxy代理

    這篇文章主要介紹了vue中如何配置proxy代理問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 詳解TypeScript+Vue 插件 vue-class-component的使用總結(jié)

    詳解TypeScript+Vue 插件 vue-class-component的使用總結(jié)

    這篇文章主要介紹了TypeScript+Vue 插件 vue-class-component的使用總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • element-ui在table中如何禁用其中幾行

    element-ui在table中如何禁用其中幾行

    這篇文章主要介紹了element-ui在table中如何禁用其中幾行問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 對Vue table 動態(tài)表格td可編輯的方法詳解

    對Vue table 動態(tài)表格td可編輯的方法詳解

    今天小編就為大家分享一篇對Vue table 動態(tài)表格td可編輯的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Vue3?Watch踩坑實戰(zhàn)之watch監(jiān)聽無效

    Vue3?Watch踩坑實戰(zhàn)之watch監(jiān)聽無效

    Vue.js中的watch選項用于監(jiān)聽Vue實例上某個特定的數(shù)據(jù)變化,下面這篇文章主要給大家介紹了關(guān)于Vue3?Watch踩坑實戰(zhàn)之watch監(jiān)聽無效的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • Vue首評加載速度及白屏時間優(yōu)化詳解

    Vue首評加載速度及白屏時間優(yōu)化詳解

    這篇文章主要介紹了vue項目優(yōu)化首評加載速度,以及白屏時間過久的問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-09-09
  • vue路由跳轉(zhuǎn)打開新窗口(window.open())和關(guān)閉窗口(window.close())

    vue路由跳轉(zhuǎn)打開新窗口(window.open())和關(guān)閉窗口(window.close())

    這篇文章主要介紹了vue路由跳轉(zhuǎn)打開新窗口(window.open())和關(guān)閉窗口(window.close())問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 前端vue中el-table增加合計行及合并單元格代碼示例

    前端vue中el-table增加合計行及合并單元格代碼示例

    在有些情況下我們會有合并表頭、合并列、合并尾部合計的需求,這篇文章主要給大家介紹了關(guān)于前端vue中el-table增加合計行及合并單元格的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • VueAwesomeSwiper在VUE中的使用以及遇到的一些問題

    VueAwesomeSwiper在VUE中的使用以及遇到的一些問題

    這篇文章主要介紹了VueAwesomeSwiper在VUE中的使用以及遇到的一些問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01

最新評論