当前位置:首页 > 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> 标签简单但已废弃,适合快速实现基础效果。

vue实现文字滚动效果

<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)

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

vue实现文字滚动效果

  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实现对话框效果

vue实现对话框效果

Vue 对话框实现方法 使用组件化方式封装对话框 创建一个独立的对话框组件(如Dialog.vue),通过v-model控制显示隐藏: <template> <div clas…

vue实现吸附效果

vue实现吸附效果

实现吸附效果的基本思路 吸附效果通常指当页面滚动到某个位置时,元素固定在视口的特定位置。Vue中可以通过监听滚动事件结合CSS的position: sticky或动态样式切换实现。 使用CSS的po…

vue实现滚动效果

vue实现滚动效果

Vue 实现滚动效果的方法 使用原生滚动方法 通过 Vue 的 ref 获取 DOM 元素,调用原生 scrollTo 或 scrollIntoView 方法实现滚动。 <template&g…

css3制作印章文字

css3制作印章文字

使用CSS3制作印章文字效果 通过CSS3的transform、border-radius和text-shadow等属性,可以模拟传统印章的文字排列和视觉效果。 基本结构 <div clas…

vue 实现文字动画

vue 实现文字动画

Vue 实现文字动画的方法 使用 CSS 动画结合 Vue 过渡 Vue 的 <transition> 组件可以与 CSS 动画结合,实现文字的动态效果。例如淡入淡出: <tran…

vue 实现toggle效果

vue 实现toggle效果

使用 v-show 实现 Toggle 通过 v-show 指令可以控制元素的显示与隐藏,适合频繁切换的场景。v-show 仅切换 CSS 的 display 属性,不会销毁和重建 DOM。 <…