vue

vue如何实现文字上下滚动跑马灯效果

小亿
1003
2023-08-07 19:57:12
栏目: 编程语言

要在Vue中实现文字上下滚动的跑马灯效果,可以使用CSS和Vue的动态绑定来实现。

首先,在Vue组件中定义一个变量来保存要展示的文字内容。然后使用CSS样式来创建滚动效果。

以下是一个简单的示例:

<template>

  <div class="marquee-container">

    <div class="marquee" :style="{ top: position + 'px' }">{{ text }}</div>

  </div>

</template>

<script>

export default {

  data() {

    return {

      text: '这是一段要滚动的文字',

      position: 0,

      speed: 2, // 滚动速度,可根据需要调整

      timer: null

    };

  },

  mounted() {

    this.startMarquee();

  },

  beforeDestroy() {

    this.stopMarquee();

  },

  methods: {

    startMarquee() {

      this.timer = setInterval(() => {

        this.position -= this.speed;

        // 当文字完全滚出容器时,重置位置

        const containerHeight = this.$el.offsetHeight;

        const contentHeight = this.$refs.marquee.offsetHeight;

        if (Math.abs(this.position) >= contentHeight) {

          this.position = containerHeight;

        }

      }, 20);

    },

    stopMarquee() {

      clearInterval(this.timer);

    }

  }

};

</script>

<style>

.marquee-container {

  height: 50px; /* 容器高度,可根据需要调整 */

  overflow: hidden;

}

.marquee {

  position: relative;

  transition: top 0.2s linear;

}

</style>

在上面的例子中,使用marquee-container类定义了一个高度固定的容器。在容器内部,使用marquee类来包裹要滚动的文字内容。通过绑定:style属性,将文字的位置与变量position关联起来。

在mounted钩子函数中,调用startMarquee方法来开始滚动效果。在beforeDestroy钩子函数中,调用stopMarquee方法来停止滚动。

这样,当组件被渲染时,文字就会以指定的速度从上往下滚动,并且当文字完全滚出容器后,会重新回到容器顶部重新开始滚动。你可以根据需要调整滚动速度、容器高度和其他样式。


1
看了该问题的人还看了