当前位置:首页 > VUE

vue 实现文字滚动

2026-02-10 19:01:36VUE

使用 CSS 动画实现文字滚动

通过 CSS 的 @keyframesanimation 属性实现文字横向滚动效果。适用于简单的单行文字滚动需求。

<template>
  <div class="scroll-container">
    <div class="scroll-text">{{ text }}</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      text: "这是一段需要滚动的文字内容,可以根据实际需求调整长度..."
    }
  }
}
</script>

<style scoped>
.scroll-container {
  width: 300px;
  overflow: hidden;
  white-space: nowrap;
}

.scroll-text {
  display: inline-block;
  animation: scroll 10s linear infinite;
}

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

使用 marquee 标签实现兼容方案

虽然 <marquee> 标签已废弃,但在某些场景下仍可使用。注意这不是推荐做法,仅作兼容性参考。

<template>
  <marquee behavior="scroll" direction="left">
    {{ text }}
  </marquee>
</template>

<script>
export default {
  data() {
    return {
      text: "使用marquee标签实现的滚动文字效果"
    }
  }
}
</script>

列表内容循环滚动

适用于需要循环展示多条信息的场景,通过定时器控制滚动位置。

<template>
  <div class="list-container" ref="list">
    <div 
      v-for="(item, index) in list" 
      :key="index"
      class="list-item"
    >
      {{ item }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list: [
        "第一条消息",
        "第二条消息",
        "第三条消息",
        "第四条消息"
      ],
      currentIndex: 0
    }
  },
  mounted() {
    this.startScroll()
  },
  methods: {
    startScroll() {
      setInterval(() => {
        this.currentIndex = (this.currentIndex + 1) % this.list.length
        this.$refs.list.style.transform = `translateY(-${this.currentIndex * 30}px)`
      }, 2000)
    }
  }
}
</script>

<style scoped>
.list-container {
  height: 30px;
  overflow: hidden;
  transition: transform 0.5s ease;
}

.list-item {
  height: 30px;
  line-height: 30px;
}
</style>

使用第三方库实现复杂滚动

对于更复杂的滚动需求,可以考虑使用专门的字幕滚动库,如 vue-seamless-scroll

安装依赖:

npm install vue-seamless-scroll

使用示例:

vue 实现文字滚动

<template>
  <vue-seamless-scroll 
    :data="list" 
    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: [
        "第一条滚动内容",
        "第二条滚动内容",
        "第三条滚动内容",
        "第四条滚动内容"
      ]
    }
  }
}
</script>

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

注意事项

  1. 性能优化:对于大量数据的滚动,应考虑虚拟滚动技术
  2. 响应式设计:滚动容器宽度应适应不同屏幕尺寸
  3. 动画平滑度:适当调整过渡时间和缓动函数
  4. 内存管理:组件销毁时清除定时器
  5. 无障碍访问:确保滚动内容可被屏幕阅读器识别

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

相关文章

vue列表实现

vue列表实现

Vue 列表实现方法 使用 v-for 指令 v-for 是 Vue 中用于渲染列表的核心指令,基于数据源动态生成 DOM 元素。语法格式为 item in items 或 (item, index)…

vue 实现脚本

vue 实现脚本

Vue 实现脚本的方法 Vue.js 提供了多种方式来实现脚本功能,包括组件内脚本、混入(Mixins)、插件(Plugins)以及自定义指令等。以下是常见的实现方式: 组件内脚本 在 Vue 单文…

vue实现ssr

vue实现ssr

Vue 实现 SSR(服务端渲染) Vue 的服务端渲染(SSR)允许在服务器端生成完整的 HTML 内容,再发送到客户端,提升首屏加载速度和 SEO 友好性。以下是实现 Vue SSR 的关键步骤和…

vue实现tap

vue实现tap

Vue 实现 Tap 事件 在移动端开发中,Tap 事件比 Click 事件更常用,因为 Click 事件有 300ms 延迟。以下是几种在 Vue 中实现 Tap 事件的方法。 使用第三方库 安装…

vue实现hovuer

vue实现hovuer

Vue 实现 Hover 效果 在 Vue 中实现 hover 效果可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 直接控制 通过 :hover 伪类实现,无需额外的 JavaScrip…

vue实现增加

vue实现增加

实现 Vue 中的新增功能 在 Vue 中实现新增功能通常涉及数据绑定、表单处理和状态管理。以下是几种常见的实现方式: 数据绑定与列表渲染 通过 v-model 绑定表单输入,使用数组的 push…