当前位置:首页 > VUE

vue实现文字滚动停顿

2026-01-21 09:47:09VUE

实现文字滚动停顿的几种方法

在Vue中实现文字滚动并带有停顿效果,可以通过CSS动画、JavaScript定时器或第三方库来实现。以下是几种常见的实现方式:

使用CSS动画实现

通过CSS的@keyframesanimation属性可以实现文字滚动效果,结合animation-delay或关键帧设置停顿时间。

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

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

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

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

使用JavaScript定时器实现

通过setIntervalsetTimeout控制滚动和停顿时间,实现更灵活的停顿效果。

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

<script>
export default {
  data() {
    return {
      text: '这是一段需要滚动并停顿的文字内容。',
      scrollPosition: 0,
      isPaused: false
    };
  },
  mounted() {
    this.startScrolling();
  },
  methods: {
    startScrolling() {
      const container = this.$refs.scrollContainer;
      const textElement = this.$refs.scrollText;

      const scroll = () => {
        if (this.isPaused) return;

        this.scrollPosition -= 1;
        textElement.style.transform = `translateX(${this.scrollPosition}px)`;

        if (this.scrollPosition <= -textElement.offsetWidth) {
          this.scrollPosition = container.offsetWidth;
          this.isPaused = true;
          setTimeout(() => {
            this.isPaused = false;
          }, 2000); // 停顿2秒
        }

        requestAnimationFrame(scroll);
      };

      scroll();
    }
  }
};
</script>

使用第三方库(如vue-marquee)

vue-marquee是一个专门用于实现文字滚动的Vue组件,支持停顿效果。

安装:

npm install vue-marquee-text-component

使用:

<template>
  <vue-marquee-text :duration="10" :repeat="4" :paused="isPaused">
    {{ text }}
  </vue-marquee-text>
</template>

<script>
import VueMarqueeText from 'vue-marquee-text-component';

export default {
  components: {
    VueMarqueeText
  },
  data() {
    return {
      text: '这是一段需要滚动并停顿的文字内容。',
      isPaused: false
    };
  },
  mounted() {
    setInterval(() => {
      this.isPaused = !this.isPaused;
    }, 5000); // 每5秒停顿一次
  }
};
</script>

结合Vue Transition实现平滑停顿

通过Vue的过渡效果,可以实现更平滑的停顿和滚动切换。

<template>
  <div class="scroll-container">
    <transition name="scroll" mode="out-in">
      <div :key="currentText" class="scroll-text">{{ currentText }}</div>
    </transition>
  </div>
</template>

<script>
export default {
  data() {
    return {
      texts: ['第一段文字', '第二段文字', '第三段文字'],
      currentIndex: 0,
      interval: null
    };
  },
  computed: {
    currentText() {
      return this.texts[this.currentIndex];
    }
  },
  mounted() {
    this.interval = setInterval(() => {
      this.currentIndex = (this.currentIndex + 1) % this.texts.length;
    }, 3000); // 每3秒切换一次
  },
  beforeDestroy() {
    clearInterval(this.interval);
  }
};
</script>

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

.scroll-text {
  display: inline-block;
}

.scroll-enter-active, .scroll-leave-active {
  transition: all 1s;
}

.scroll-enter {
  transform: translateX(100%);
}

.scroll-leave-to {
  transform: translateX(-100%);
}
</style>

以上方法可以根据具体需求选择,CSS动画适合简单的滚动效果,JavaScript定时器提供更灵活的控制,而第三方库可以快速实现复杂功能。

vue实现文字滚动停顿

标签: 停顿文字
分享给朋友:

相关文章

vue 实现文字滚动

vue 实现文字滚动

实现文字滚动的几种方法 在Vue中实现文字滚动效果可以通过多种方式实现,以下是几种常见的实现方法: 使用CSS动画 通过CSS的animation和@keyframes可以实现简单的文字滚动效果。…

vue 实现文字动画

vue 实现文字动画

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

vue实现文字选中

vue实现文字选中

Vue 实现文字选中功能 在 Vue 中实现文字选中功能,可以通过监听鼠标事件或使用浏览器原生 API 完成。以下是几种常见方法: 使用 mouseup 事件监听选中文本 通过监听 mouseup…

vue实现文字滚动

vue实现文字滚动

Vue 实现文字滚动的方法 使用 CSS 动画实现文字滚动 通过 CSS 的 animation 和 @keyframes 实现文字滚动效果,适用于简单的横向或纵向滚动需求。 <templa…

vue实现文字输出

vue实现文字输出

Vue实现文字输出的方法 使用插值表达式 在Vue模板中,可以通过双大括号{{}}插入动态文本。这种方式适合简单的文本绑定。 <template> <div>{{ mes…

vue实现文字墙

vue实现文字墙

Vue 实现文字墙的方法 文字墙是一种常见的视觉展示效果,通常用于展示标签、关键词或动态文本。以下是几种实现方式: 1. 基础文字墙实现 使用 Vue 的 v-for 指令循环渲染文字元素,结合…