当前位置:首页 > VUE

vue实现文字向上滚动

2026-02-21 10:51:13VUE

实现文字向上滚动的 Vue 方法

使用 CSS 动画实现基础滚动

通过 CSS @keyframestransform 实现垂直滚动效果,适用于静态内容。

<template>
  <div class="scroll-container">
    <div class="scroll-content">
      <p v-for="(item, index) in items" :key="index">{{ item }}</p>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: ['内容1', '内容2', '内容3', '内容4']
    }
  }
}
</script>

<style>
.scroll-container {
  height: 100px;
  overflow: hidden;
  position: relative;
}

.scroll-content {
  animation: scroll 10s linear infinite;
}

@keyframes scroll {
  0% { transform: translateY(0); }
  100% { transform: translateY(-100%); }
}
</style>

动态数据无限循环滚动

结合 setInterval 实现动态数据更新,适合实时数据场景。

vue实现文字向上滚动

<template>
  <div class="scroll-box">
    <div 
      class="scroll-list" 
      :style="{ transform: `translateY(${offset}px)` }"
    >
      <div v-for="(item, index) in list" :key="index">{{ item.text }}</div>
      <!-- 复制内容实现无缝衔接 -->
      <div v-for="(item, index) in list" :key="index + '_copy'">{{ item.text }}</div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list: [
        { text: '动态内容A' },
        { text: '动态内容B' },
        { text: '动态内容C' }
      ],
      offset: 0,
      timer: null
    }
  },
  mounted() {
    this.startScroll()
  },
  beforeDestroy() {
    clearInterval(this.timer)
  },
  methods: {
    startScroll() {
      const speed = 1 // 滚动速度
      const itemHeight = 30 // 单行高度
      this.timer = setInterval(() => {
        this.offset -= speed
        if (Math.abs(this.offset) >= this.list.length * itemHeight) {
          this.offset = 0
        }
      }, 50)
    }
  }
}
</script>

<style>
.scroll-box {
  height: 90px;
  overflow: hidden;
}
.scroll-list {
  transition: transform 0.3s linear;
}
</style>

使用第三方库 vue-seamless-scroll

对于复杂需求,可直接使用专门开发的第三方组件库。

vue实现文字向上滚动

安装依赖:

npm install vue-seamless-scroll

实现示例:

<template>
  <vue-seamless-scroll 
    :data="list" 
    :class-option="options"
    class="seamless-wrap"
  >
    <ul>
      <li v-for="(item, index) in list" :key="index">{{ item }}</li>
    </ul>
  </vue-seamless-scroll>
</template>

<script>
import vueSeamlessScroll from 'vue-seamless-scroll'
export default {
  components: { vueSeamlessScroll },
  data() {
    return {
      list: ['数据A', '数据B', '数据C', '数据D'],
      options: {
        direction: 2, // 0向下 1向上 2向左 3向右
        limitMoveNum: 3, // 可视区域内移动的元素数量
        step: 1, // 步长
        hoverStop: true // 悬停暂停
      }
    }
  }
}
</script>

<style>
.seamless-wrap {
  height: 120px;
  overflow: hidden;
}
</style>

性能优化建议

  • 对于大量数据采用虚拟滚动技术,只渲染可视区域内容
  • 使用 will-change: transform 提升 CSS 动画性能
  • 动态数据场景下注意清除定时器避免内存泄漏
  • 移动端考虑使用 requestAnimationFrame 替代 setInterval

标签: 文字vue
分享给朋友:

相关文章

vue实现皮肤切换

vue实现皮肤切换

实现皮肤切换的基本思路 在Vue中实现皮肤切换功能,通常涉及动态修改CSS变量或类名。核心是通过状态管理当前主题,并在组件中应用对应的样式。 使用CSS变量实现主题切换 CSS变量(自定义属性)是实…

vue实现绑卡的原理

vue实现绑卡的原理

Vue 实现绑卡的原理 Vue 实现绑卡功能通常涉及前端表单处理、数据绑定、验证以及和后端 API 的交互。以下是实现绑卡功能的核心原理和步骤: 数据绑定与表单处理 Vue 通过 v-model…

vue实现密码框的包

vue实现密码框的包

Vue 密码框实现方案 在 Vue 中实现密码框功能,可以通过原生 HTML 结合 Vue 指令或使用第三方组件库完成。以下是几种常见方案: 原生 HTML + Vue 双向绑定 <t…

vue实现视窗

vue实现视窗

Vue 实现视窗功能 在 Vue 中实现视窗功能通常涉及监听浏览器窗口大小变化、响应式布局或创建自定义弹窗组件。以下是几种常见实现方式: 监听浏览器窗口大小变化 使用 Vue 的 mounted…

vue实现div

vue实现div

Vue 实现 DIV 元素的方法 在 Vue 中实现 DIV 元素可以通过多种方式,以下是几种常见的实现方法: 使用模板语法 在 Vue 的模板中直接使用 HTML 的 <div> 标签…

vue权限实现

vue权限实现

Vue 权限实现方案 基于路由的权限控制 通过路由守卫实现权限验证,在路由配置中添加meta字段标记权限要求。在router.beforeEach中检查用户权限与路由要求的匹配情况。 // rout…