Vue實(shí)現(xiàn)文字上下滾動動畫的示例代碼
前言
今天剛好有個需求用到文字滾動的特性,于是去網(wǎng)上看看能不能cv,但是都不太適合,不夠簡單...于是自己寫了個。剛好在掘金這也好久沒發(fā)過文章了,咱也來活躍下(dog
實(shí)現(xiàn)原理
vue官方自己實(shí)現(xiàn)了一個TransitionGroup動畫組件, 下面是官方的描述: <TransitionGroup> 是一個內(nèi)置組件,用于對 v-for 列表中的元素或組件的插入、移除和順序改變添加動畫效果。 到這里,朋友們應(yīng)該明白了,我們只需要加一個往上或者往下的css動畫效果,然后利用計(jì)時器定時增加和刪除數(shù)據(jù),TransitionGroup組件就會自己觸發(fā)css動畫效果,完全不需要自己額外操作dom之類的。
但是如果數(shù)據(jù)只有不足4條的情況下,這個動畫效果就無法連貫了,所以在數(shù)據(jù)不足的情況下需要將數(shù)據(jù)填充至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>
到此這篇關(guān)于Vue實(shí)現(xiàn)文字上下滾動動畫的示例代碼的文章就介紹到這了,更多相關(guān)Vue文字上下滾動內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue中el-select 和el-tree二次封裝實(shí)現(xiàn)
本文介紹了vue中el-select 和el-tree二次封裝實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11
vue2.0與bootstrap3實(shí)現(xiàn)列表分頁效果
這篇文章主要為大家詳細(xì)介紹了vue2.0與bootstrap3實(shí)現(xiàn)列表分頁效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
詳解Vue組件插槽的使用以及調(diào)用組件內(nèi)的方法
在本篇文章里我們給大家分享了Vue組件插槽的使用以及調(diào)用組件內(nèi)的方法相關(guān)知識點(diǎn),有需要的朋友們參考下。2018-11-11
vue中關(guān)于v-for循環(huán)key值問題的研究
這篇文章主要介紹了vue中關(guān)于v-for循環(huán)key值問題的研究,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
vue靜態(tài)界面之左二級菜單右表單表格的實(shí)例代碼
這篇文章主要介紹了vue靜態(tài)界面之左二級菜單右表單表格,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08

