当前位置:首页 > VUE

vue跑马灯实现

2026-01-20 07:40:44VUE

使用 CSS 动画实现跑马灯

通过 CSS 的 @keyframestransform 属性实现水平滚动的跑马灯效果。定义一个动画,让内容从右向左移动。

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

<script>
export default {
  data() {
    return {
      text: '这是一段需要滚动的文字,可以替换为任意内容。'
    }
  }
}
</script>

<style>
.marquee-container {
  width: 100%;
  overflow: hidden;
  white-space: nowrap;
}

.marquee-content {
  display: inline-block;
  animation: marquee 10s linear infinite;
}

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

使用 JavaScript 动态计算宽度

对于动态内容或不确定宽度的情况,通过 JavaScript 计算内容宽度并动态设置动画时长。

<template>
  <div class="marquee-container" ref="container">
    <div class="marquee-content" ref="content">
      {{ text }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      text: '动态宽度内容,动画时长会根据内容长度自动调整。'
    }
  },
  mounted() {
    this.adjustAnimationDuration();
  },
  methods: {
    adjustAnimationDuration() {
      const containerWidth = this.$refs.container.offsetWidth;
      const contentWidth = this.$refs.content.offsetWidth;
      const duration = (contentWidth / containerWidth) * 5; // 基础时长比例
      this.$refs.content.style.animationDuration = `${duration}s`;
    }
  }
}
</script>

<style>
.marquee-container {
  width: 100%;
  overflow: hidden;
  white-space: nowrap;
}

.marquee-content {
  display: inline-block;
  animation: marquee linear infinite;
}

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

无缝循环跑马灯

通过复制一份内容并交替动画,实现无缝循环效果。

<template>
  <div class="marquee-container">
    <div class="marquee-wrapper">
      <div class="marquee-content" v-for="(item, index) in 2" :key="index">
        {{ text }}
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      text: '无缝循环跑马灯效果,内容会连续滚动不中断。'
    }
  }
}
</script>

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

.marquee-wrapper {
  display: flex;
  width: 200%; /* 双倍宽度容纳两份内容 */
}

.marquee-content {
  flex: 1;
  white-space: nowrap;
  animation: marquee 10s linear infinite;
}

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

垂直滚动跑马灯

修改动画方向实现垂直滚动效果。

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

<script>
export default {
  data() {
    return {
      items: [
        '第一条消息',
        '第二条消息',
        '第三条消息',
        '第四条消息'
      ]
    }
  }
}
</script>

<style>
.marquee-vertical {
  height: 200px;
  overflow: hidden;
}

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

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

使用第三方库 vue-marquee

对于更复杂的需求,可以使用专门的 Vue 跑马灯组件库。

安装依赖:

npm install vue-marquee-text-component

示例代码:

vue跑马灯实现

<template>
  <marquee-text :duration="20" :repeat="3">
    使用第三方库实现的跑马灯效果,支持更多配置选项。
  </marquee-text>
</template>

<script>
import MarqueeText from 'vue-marquee-text-component'

export default {
  components: {
    MarqueeText
  }
}
</script>

以上方法涵盖了从简单到复杂的多种跑马灯实现方式,可根据项目需求选择合适方案。CSS 动画方案性能较好,适合简单需求;JavaScript 方案更灵活;第三方库则提供开箱即用的丰富功能。

标签: 跑马灯vue
分享给朋友:

相关文章

用vue实现滑动输入条

用vue实现滑动输入条

使用 Vue 实现滑动输入条 使用原生 HTML5 input range 实现 在 Vue 模板中直接使用 <input type="range">,通过 v-model 绑定数据:…

vue实现遮罩

vue实现遮罩

Vue 实现遮罩层的方法 在 Vue 中实现遮罩层可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-show 或 v-if 控制显示 通过 Vue 的指令动态控制遮罩层的显示与隐藏。…

computed vue 实现

computed vue 实现

computed 在 Vue 中的基本用法 Vue 的 computed 属性用于声明依赖于其他数据的计算属性。当依赖的数据变化时,计算属性会自动重新计算并缓存结果。 export defaul…

vue实现selectable

vue实现selectable

Vue 实现可选择的 Select 组件 在 Vue 中实现一个可选择的 Select 组件,可以通过以下几种方式: 使用原生 HTML select 元素 <template> &…

vue动画实现

vue动画实现

Vue动画实现方法 Vue提供了多种方式实现动画效果,主要通过内置组件和第三方库完成。 使用<transition>组件 Vue内置的<transition>组件可以为元素添…

实现vue框架

实现vue框架

Vue框架的基本实现 Vue是一个渐进式JavaScript框架,用于构建用户界面。以下是实现Vue框架的基本步骤: 安装Vue 通过CDN引入Vue是最简单的方式: <script src…