2分钟让你的数字“活”起来!vue项目大屏可视化数字动画效果——数字翻牌器

1,801 阅读2分钟

最近我参与了一个大屏可视化项目,项目要求具有显著的视觉吸引力。大屏可视化通常依赖于图表和数字来展示数据,因此在设计界面时,对于数字的展示效果进行优化显得尤为重要,这不仅可以提升用户体验,还能增强界面的美观性和酷炫程度。

在这个项目中,我接到的具体需求是在用户进入页面时,数字能够滚动出现,并在每次数据变化时保持这一动感效果。

实现效果:

数字翻牌器.gif

为了实现这一功能,我采用了 Datav 的数字翻牌器, 下面是实现效果的具体步骤:

实现步骤:

1:在Vue项目内安装datav组件库。

npm安装:

npm install @jiaminghi/data-view

或者yarn安装:

yarn add @jiaminghi/data-view

2:引入

根据项目的需求,可以选择全局引入或按需引入组件。由于我在项目中不仅使用了数字翻牌器,还计划使用其他组件,因此我选择全局引入(在 main.js 文件中):

import dataV from '@jiaminghi/data-view'
Vue.use(dataV)

想按需引入的看这里:按需引入(哪个文件使用就在哪个文件引入):

import { borderBox1 } from '@jiaminghi/data-view'
Vue.use(borderBox1)

3:使用

a. 直接使用数字翻牌器的标签:dv-digital-flop

b. ref给翻牌器标签命名

c. :config绑定数据配置项

d: style给样式,宽高一定要给

 <dv-digital-flop
          ref="digitalRef"
          :config="digitalConfig"
          style="width:215px;height:31px;padding-left:15px;"
        >
 </dv-digital-flop>

e: 在data里面初始化:config绑定的数据和原本的数据

 digitalConfig: {
        number: [0], // 默认数据
        textAlign: 'left', //位置
        style: {
          fontSize: 26, //文字大小
          fill: '#00ffff' //文字颜色
        }
      },

      RollData: 9988998899 //要动画效果的数据
    

f: 由于在页面加载时,结构可能尚未渲染完成,因此使用 setTimeout 来延迟数据更新:

    setTimeout(() => {
          this.digitalConfig.number = [this.RollData]
          this.$refs.digitalRef.update()
        }, 300)

下面是页面完整代码(直接cv可用):

  <template>
      <div class="datavCom">
        <dv-digital-flop
          ref="digitalRef"
          :config="digitalConfig"
          style="width:215px;height:31px;padding-left:15px;"
        >
        </dv-digital-flop>
      </div>
    </template>

    <script>
    export default {
      name: '',
      data () {
        return {
          digitalConfig: {
            number: [0], // 默认数据
            textAlign: 'left', //位置
            style: {
              fontSize: 26, //文字大小
              fill: '#00ffff' //文字颜色
            }
          },

          RollData: 9988998899 //要动画效果的数据
        }
      },
      mounted () {
        setTimeout(() => {
          this.digitalConfig.number = [this.RollData]
          this.$refs.digitalRef.update()
        }, 300)
      }
    }
    </script>

    <style>
    .datavCom {
      display: flex;
      justify-content: center;
      align-items: center;
      width: 100vw;
      height: 100vh;
      background-color: #00020e;
    }
    </style>

如果还有不明白的地方,可以看官网(官网传送门:datav.jiaminghi.com/guide/digit…