当前位置:首页 > 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>

无缝循环跑马灯

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

vue跑马灯实现

<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 跑马灯组件库。

vue跑马灯实现

安装依赖:

npm install vue-marquee-text-component

示例代码:

<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 实现菜单的方法 在 Vue 中实现菜单功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-for 动态生成菜单项 通过数据驱动的方式,利用 v-for 指令动态渲染菜单项。定义一个数…

vue实现录播播放

vue实现录播播放

Vue 实现录播播放 使用 video.js 实现 安装 video.js 和相关的 Vue 适配器: npm install video.js @videojs-player/vue 在 Vue…

vue公共列表的实现

vue公共列表的实现

实现 Vue 公共列表组件 公共列表组件通常用于展示重复结构的数据,例如商品列表、用户列表等。以下是一个典型的实现方式: 基础实现 创建可复用的列表组件 List.vue: <tem…

vue实现走势图

vue实现走势图

Vue 实现走势图的方法 使用 ECharts 库 ECharts 是一个强大的数据可视化库,支持多种图表类型,包括走势图(折线图)。在 Vue 项目中可以通过 vue-echarts 封装库或直接使…

vue实现自定义登录

vue实现自定义登录

实现自定义登录的基本步骤 在Vue中实现自定义登录功能通常需要结合前端和后端技术。以下是一个基本的实现流程: 创建登录表单组件 使用Vue的单文件组件创建一个登录表单,包含用户名和密码输入框以及提交…

vue实现付款

vue实现付款

Vue 实现付款功能 在 Vue 中实现付款功能通常需要集成第三方支付网关(如支付宝、微信支付、Stripe 等)。以下是常见的实现方法: 集成支付宝/微信支付 安装必要的依赖(如 axios 用…