Vue实现文字上下滚动动画的示例代码

 更新时间:2024年03月15日 09:00:49   作者:Daiyaosei  
这篇文章主要为大家详细介绍了如何使用Vue实现超酷文字上下滚动动画,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考下

前言

今天刚好有个需求用到文字滚动的特性,于是去网上看看能不能cv,但是都不太适合,不够简单...于是自己写了个。刚好在掘金这也好久没发过文章了,咱也来活跃下(dog

实现原理

vue官方自己实现了一个TransitionGroup动画组件, 下面是官方的描述: <TransitionGroup> 是一个内置组件,用于对 v-for 列表中的元素或组件的插入、移除和顺序改变添加动画效果。 到这里,朋友们应该明白了,我们只需要加一个往上或者往下的css动画效果,然后利用计时器定时增加和删除数据,TransitionGroup组件就会自己触发css动画效果,完全不需要自己额外操作dom之类的。

但是如果数据只有不足4条的情况下,这个动画效果就无法连贯了,所以在数据不足的情况下需要将数据填充至4条并增加唯一id。

动画效果

代码逻辑

html

<template>
  <div>
    <TransitionGroup name="fade" tag="ul" :duration="1000">
    // 此处ID需要唯一
      <li v-for="(item) in data" :key="item.id">
        【{{ item.user }}】{{ item.age }} //...
      </li>
    </TransitionGroup>
  </div>
</template>

js

import { onMounted, onUnmounted, ref, unref } from "vue";
import { getTransactionToday } from "@/services/common";
import store from "@/store";
import dayjs from "dayjs";

const data = ref([]);
let timer;
const getScrollText = async () => {
  const res = await api()
  data.value = res.data
  return Promise.resolve(res.data);
};

let num = 2000;
const init = async () => {
  clearTimeout(timer);
  await getScrollText();
  if (!unref(data).length) return;
  if ([1,2].includes(unref(data).length)) {
  // 这里的id可以改成其他字段,只要是唯一就行
    for (let i = 0; i < (4-unref(data).length); i++) {
      unref(data).push({ ...unref(data)[0], id: Date.now() + i });
    }
  }
  let delData;
  timer = setInterval(() => {
    if (delData) {
      unref(data).push(delData);
      delData = null;
    } else {
      delData = unref(data)[0];
      unref(data).shift();
    }
  }, num);
};
onMounted(() => {
  init();
});
onUnmounted(() => {
  clearInterval(timer);
});

css

<style scoped lang="scss">
$height: 40px;

.fade-move,
.fade-enter-active,
.fade-leave-active {
  transition: all 0.5s;
}

.fade-enter-from {
  transform: translate(0, $height);
}

.fade-leave-to {
  transform: translate(0, -$height);
}

.fade-enter-active,
.fade-leave-active {
  position: absolute;
}
</style>

到此这篇关于Vue实现文字上下滚动动画的示例代码的文章就介绍到这了,更多相关Vue文字上下滚动内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue3获取和操作DOM元素的项目实践

    Vue3获取和操作DOM元素的项目实践

    在Vue3中,有时我们需要直接操作DOM节点,本文主要介绍了Vue3获取和操作DOM元素的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Vue3和Vue2的slot-scope插槽用法解读

    Vue3和Vue2的slot-scope插槽用法解读

    这篇文章主要介绍了Vue3和Vue2的slot-scope插槽用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue3 name 属性的使用技巧详解

    vue3 name 属性的使用技巧详解

    这篇文章主要为大家介绍了vue3 name 属性的使用技巧详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • vue el-switch初始值(默认值)不能正确显示状态问题及解决

    vue el-switch初始值(默认值)不能正确显示状态问题及解决

    这篇文章主要介绍了vue el-switch初始值(默认值)不能正确显示状态问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue3中WatchEffect高级侦听器的实现

    vue3中WatchEffect高级侦听器的实现

    本文主要介绍了vue3中WatchEffect高级侦听器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • 详解Vite+JavaScript+Vue+Yarn实现登录页面实战

    详解Vite+JavaScript+Vue+Yarn实现登录页面实战

    本文主要介绍了Vite+JavaScript+Vue+Yarn实现登录页面实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • VScode格式化ESlint方法(最全最好用方法)

    VScode格式化ESlint方法(最全最好用方法)

    这篇文章主要介绍了VScode格式化ESlint方法(最全最好用方法),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • vue3如何解决slot深层透传问题

    vue3如何解决slot深层透传问题

    这篇文章主要介绍了vue3如何解决slot深层透传问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 浅析vue component 组件使用

    浅析vue component 组件使用

    本篇文章主要介绍了vue component 组件使用 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • element-ui 弹窗组件封装的步骤

    element-ui 弹窗组件封装的步骤

    这篇文章主要介绍了element-ui 弹窗组件封装的步骤,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
    2021-01-01

最新评论