• 19-count-to数字滚动组件封装


    http://inorganik.github.io/countUp.js/

      1 <template>
      2   <div>
      3     <slot name="left"></slot><span ref="number" :class="countClass" :id="eleId"></span><slot name="right"></slot>
      4   </div>
      5 </template>
      6 <script>
      7 import CountUp from 'countup'
      8 export default {
      9   name: 'CountTo',
     10   computed: {
     11     eleId () {
     12       return `count_up_${this._uid}`
     13     },
     14     countClass () {
     15       return [
     16         'count-to-number',
     17         this.className
     18       ]
     19     }
     20   },
     21   data () {
     22     return {
     23       counter: {}
     24     }
     25   },
     26   props: {
     27     /**
     28      * @description 起始值
     29      */
     30     startVal: {
     31       type: Number,
     32       default: 0
     33     },
     34     /**
     35      * @description 最终值
     36      */
     37     endVal: {
     38       type: Number,
     39       required: true
     40     },
     41     /**
     42      * @description 小数点后保留几位小数
     43      */
     44     decimals: {
     45       type: Number,
     46       default: 0
     47     },
     48     /**
     49      * @description 动画延迟开始时间
     50      */
     51     delay: {
     52       type: Number,
     53       default: 0
     54     },
     55     /**
     56      * @description 渐变时长
     57      */
     58     duration: {
     59       type: Number,
     60       default: 1
     61     },
     62     /**
     63      * @description 是否使用变速效果
     64      */
     65     useEasing: {
     66       type: Boolean,
     67       default: false
     68     },
     69     /**
     70      * @description 是否使用变速效果
     71      */
     72     useGrouping: {
     73       type: Boolean,
     74       default: true
     75     },
     76     /**
     77      * @description 分组符号
     78      */
     79     separator: {
     80       type: String,
     81       default: ','
     82     },
     83     /**
     84      * @description 整数和小数分割符号
     85      */
     86     decimal: {
     87       type: String,
     88       default: '.'
     89     },
     90     className: {
     91       type: String,
     92       default: ''
     93     }
     94   },
     95   methods: {
     96     getCount () {
     97       return this.$refs.number.innerText
     98     },
     99     emitEndEvent () {
    100       setTimeout(() => {
    101         this.$nextTick(() => {
    102           this.$emit('on-animation-end', Number(this.getCount()))
    103         })
    104       }, this.duration * 1000 + 5)
    105     }
    106   },
    107   watch: {
    108     endVal (newVal, oldVal) {
    109       this.counter.update(newVal)
    110       this.emitEndEvent()
    111     }
    112   },
    113   mounted () {
    114     this.$nextTick(() => {
    115       this.counter = new CountUp(this.eleId, this.startVal, this.endVal, this.decimals, this.duration, {
    116         useEasing: this.useEasing,
    117         useGrouping: this.useGrouping,
    118         separator: this.separator,
    119         decimal: this.decimal
    120       })
    121       setTimeout(() => {
    122         this.counter.start()
    123         this.emitEndEvent()
    124       }, this.delay)
    125     })
    126   }
    127 }
    128 </script>
    129 <style lang="less">
    130 @import './count-to.less';
    131 </style>

    父组件引入:

     1 <template>
     2   <div>
     3     <count-to ref="countTo" :end-val="endVal" @on-animation-end="handleEnd">
     4       <span slot="left">总金额: </span>
     5       <span slot="right">元</span>
     6     </count-to>
     7     <button @click="getNumber">获取数值</button>
     8     <button @click="up">更新值</button>
     9   </div>
    10 </template>
    11 <script>
    12 import CountTo from '@/components/count-to'
    13 export default {
    14   name: 'count_to',
    15   components: {
    16     CountTo
    17   },
    18   data () {
    19     return {
    20       endVal: 100
    21     }
    22   },
    23   methods: {
    24     getNumber () {
    25       this.$refs.countTo.getCount()
    26     },
    27     up () {
    28       this.endVal += Math.random() * 100
    29     },
    30     handleEnd (endVal) {
    31       console.log('end -> ', endVal)
    32     }
    33   }
    34 }
    35 </script>
  • 相关阅读:
    ps:图层知识
    ps:选区的存储及载入
    ps:消除锯齿和羽化
    ps:不规则选区
    ps:建立规则选区
    python如何查看内存占用空间
    python-生成器
    python3-列表生成式
    python:迭代
    Photoshop画笔工具的使用
  • 原文地址:https://www.cnblogs.com/haoqiyouyu/p/14730582.html
Copyright © 2020-2023  润新知