Vue3 大屏数字滚动效果

为了实现 Vue3 大屏数字滚动效果,我们可以使用 Vue3 的自定义指令和 CSS 动画。以下是一个简单的实现:

  1. 首先,我们需要创建一个自定义指令 scrollNumber,用于处理数字滚动的逻辑。在 src/directives 目录下创建一个名为 scrollNumber.js 的文件,并添加以下代码:
javascript 复制代码
import { ref, onMounted, onUnmounted } from 'vue';

export default {
  beforeMount(el, binding) {
    const duration = binding.value || 500; // 滚动动画时长,默认为 500ms
    const start = parseInt(el.textContent); // 起始数字
    const end = binding.arg; // 结束数字
    const step = (end - start) / duration; // 每步滚动的距离

    const timer = setInterval(() => {
      el.textContent = Math.floor(start + step);
      if (start === end) {
        clearInterval(timer);
      } else {
        start += step;
      }
    }, 16);

    onUnmounted(() => {
      clearInterval(timer);
    });
  },
};
  1. 然后,在 src/main.js 文件中引入刚刚创建的自定义指令,并将其注册为全局指令:
javascript 复制代码
import { createApp } from 'vue';
import App from './App.vue';
import scrollNumber from './directives/scrollNumber';

const app = createApp(App);
app.directive('scroll-number', scrollNumber);
app.mount('#app');
  1. 接下来,在需要实现数字滚动效果的组件中,使用自定义指令 v-scroll-number,并传入起始数字和结束数字:
html 复制代码
<template>
  <div class="container">
    <h1 v-scroll-number="1" v-scroll-number:end="100"></h1>
  </div>
</template>
  1. 最后,为数字滚动效果添加一些基本的样式:
css 复制代码
.container {
  width: 100%;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}

h1 {
  font-size: 8rem;
  color: #fff;
}

现在,当你运行项目时,你应该可以看到一个从 1 滚动到 100 的数字效果。你可以根据需要调整动画时长、起始数字和结束数字。

相关推荐
懒大王爱吃狼1 小时前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
待磨的钝刨2 小时前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
逐·風5 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#
Devil枫5 小时前
Vue 3 单元测试与E2E测试
前端·vue.js·单元测试
尚梦6 小时前
uni-app 封装刘海状态栏(适用小程序, h5, 头条小程序)
前端·小程序·uni-app
GIS程序媛—椰子6 小时前
【Vue 全家桶】6、vue-router 路由(更新中)
前端·vue.js
前端青山7 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
毕业设计制作和分享7 小时前
ssm《数据库系统原理》课程平台的设计与实现+vue
前端·数据库·vue.js·oracle·mybatis
程序媛小果7 小时前
基于java+SpringBoot+Vue的旅游管理系统设计与实现
java·vue.js·spring boot
从兄8 小时前
vue 使用docx-preview 预览替换文档内的特定变量
javascript·vue.js·ecmascript