当前位置:首页 > VUE

vue实现文字滚动效果

2026-01-23 16:06:18VUE

使用 CSS 动画实现文字滚动

通过 CSS @keyframestransform 属性实现水平或垂直滚动效果。适用于简单文字滚动场景。

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

<script>
export default {
  data() {
    return {
      text: "这是一段需要滚动的文字内容,可以自定义长度..."
    }
  }
}
</script>

<style>
.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>

调整 translateXtranslateY 可实现垂直滚动效果。动画时间通过修改 10s 调整速度。

使用 marquee 标签(兼容方案)

HTML 原生 <marquee> 标签简单但已废弃,适合快速实现基础效果。

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

基于 JavaScript 的动态计算滚动

通过 ref 获取元素宽度实现精确控制,适合动态内容。

<template>
  <div ref="scrollContainer" class="js-scroll-container">
    <div ref="scrollText" class="js-scroll-text">{{ text }}</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      text: "动态计算的滚动文字..."
    }
  },
  mounted() {
    const container = this.$refs.scrollContainer
    const text = this.$refs.scrollText
    const distance = text.offsetWidth

    text.style.animationDuration = `${distance / 50}s`
  }
}
</script>

<style>
.js-scroll-container {
  width: 100%;
  overflow: hidden;
}

.js-scroll-text {
  display: inline-block;
  white-space: nowrap;
  animation: js-scroll linear infinite;
}

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

使用第三方库(vue-seamless-scroll)

专业级解决方案,支持丰富配置项:

  1. 安装库:

    npm install vue-seamless-scroll
  2. 组件实现:

    
    <template>
    <vue-seamless-scroll 
     :data="list" 
     :class-option="option" 
     class="seamless-wrap"
    >
     <ul>
       <li v-for="(item, index) in list" :key="index">{{ item }}</li>
     </ul>
    </vue-seamless-scroll>
    </template>
import vueSeamlessScroll from 'vue-seamless-scroll' export default { components: { vueSeamlessScroll }, data() { return { list: ['内容1', '内容2', '内容3'], option: { direction: 1, // 0向下 1向上 2向左 3向右 step: 0.5, // 步长 limitMoveNum: 2, // 起始展示数量 hoverStop: true // 悬停暂停 } } } } .seamless-wrap { height: 200px; overflow: hidden; } ```

无限循环滚动方案

通过复制内容实现无缝衔接效果:

<template>
  <div class="infinite-scroll">
    <div class="content" :style="{ animationDuration: duration + 's' }">
      <span v-for="(item, i) in duplicatedList" :key="i">{{ item }}</span>
    </div>
  </div>
</template>

<script>
export default {
  props: ['list', 'duration'],
  computed: {
    duplicatedList() {
      return [...this.list, ...this.list]
    }
  }
}
</script>

<style>
.infinite-scroll {
  overflow: hidden;
}
.content {
  display: inline-block;
  white-space: nowrap;
  animation: infinite-scroll linear infinite;
}
@keyframes infinite-scroll {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
</style>

vue实现文字滚动效果

标签: 效果文字
分享给朋友:

相关文章

js实现滚动条效果

js实现滚动条效果

实现滚动条效果的方法 使用原生JavaScript实现滚动条 通过监听滚动事件,可以动态调整滚动条的位置和样式。以下是一个基础实现示例: // 获取DOM元素 const container = d…

vue实现轮播文字

vue实现轮播文字

Vue 实现轮播文字 使用 CSS 动画实现 通过 CSS 的 @keyframes 和 animation 属性实现文字轮播效果。定义一个动画,让文字从一侧移动到另一侧。 <template…

vue实现文字按钮

vue实现文字按钮

实现文字按钮的基本方法 在Vue中创建文字按钮可以通过多种方式实现,核心思路是利用按钮或可点击元素,通过CSS去除默认样式,使其呈现为纯文字形式。 模板部分 <template>…

vue实现突出效果

vue实现突出效果

Vue 实现突出效果的方法 在 Vue 中实现突出效果通常涉及动态样式绑定、动画过渡或第三方库的使用。以下是几种常见实现方式: 动态类名绑定 通过 v-bind:class 或简写 :class 实…

vue实现折叠效果

vue实现折叠效果

使用 v-show 或 v-if 实现基础折叠 通过 Vue 的指令 v-show 或 v-if 控制元素的显示与隐藏。v-show 通过 CSS 的 display 属性切换,v-if 直接操作 D…

vue实现效果更新

vue实现效果更新

Vue 实现效果更新的方法 Vue 提供了多种方式实现动态效果更新,主要依赖其响应式系统和生命周期钩子。以下是几种常见的方法: 数据绑定与响应式更新 Vue 的核心是数据驱动视图。通过修改数据,视…