vue+animation實現(xiàn)翻頁動畫
本文實例為大家分享了vue+animation實現(xiàn)翻頁動畫展示的具體代碼,供大家參考,具體內(nèi)容如下
前端在做數(shù)據(jù)展示的時候,可能提留頁面時間較長,導(dǎo)致數(shù)據(jù)不能及時更新,你可以定時更新,也可以做一個假數(shù)據(jù) 給用戶視覺上的體驗,接下來就是第二種,假數(shù)據(jù),它用了C3 animation 實現(xiàn)了一個翻頁動畫。

第一種是單獨運動
<template>
<div>
<div>
<ul>
<li v-for="(item,i) in NumberList" :key="i" ><a :class="[item.isMove ? 'move-an' : '']">{{item.num}}</a></li>
</ul>
</div>
</div>
</template>
<script>
export default {
data(){
return {
NumberList:'',
Number:108847,
}
},
mounted(){
let arr = String(this.Number).split('')
this.NumberList=[]
arr.forEach(item => {
const model = {};
model.isMove = false;
model.num = item;
this.NumberList.push(model);
});
setInterval(() =>{
this.Number=this.Number+1;
let data = String(this.Number);
let arr = data.split("");
arr.forEach((item, index) => {
if (item !== this.NumberList[index].num) {
this.NumberList[index].isMove = true
}
});
}, 10000)
},
watch: {
Number() {
setTimeout(() =>{
let data = String(this.Number);
let arr = data.split("");
this.NumberList.forEach((item, index) => {
this.NumberList[index].num = arr[index];
});
}, 500);
setTimeout(() =>{
this.NumberList.forEach((item, index) => {
this.NumberList[index].isMove = false
});
}, 1000);
}
},
methods:{
}
}
</script>
<style lang="" scoped>
h1{
text-align:center;
}
ul{
display: flex;
}
li{
list-style: none;
width:50px;height:80px;
background: red;
margin-right: 10px;
text-align: center;
line-height: 80px;
font-size:20px;
color:#ffffff;
position: relative;
}
a {
position: absolute;
top: 3px;
color: #ffffff;
}
.move-an {
animation:mymove 1s infinite linear;
-webkit-animation:mymove 1s infinite linear;
}
@keyframes mymove {
0% {top: 3px;}
25% {top: -40px;}
48% {top: -80px;}
49% {top: -80px; opacity: 0}
50% {top: 80px;}
51% {top: 80px;opacity: 1; }
100% {top: 3px;}
}
</style>
第二種是整體運動 0-9循環(huán)一邊
<template>
<div class="main">
<div v-for="(item,i) in NumberList" class="move-num" :key="i">
<div>
<div style="visibility:hidden;position: static">
<span v-for="(list, i) in item.num" :key="i" class="num-move">{{list}}</span>
</div>
<a :class="[isMove === true ? 'move-an' : '']">
<span v-for="(list, i) in item.num" :key="i" class="num-move">{{list}}</span>
</a>
</div>
</div>
</div>
</template>
<script>
export default {
data(){
return {
isMove:false,
NumberList:[],
Number:108847,
numModels: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
}
},
mounted(){
this.handdleDate()
setInterval(() => {
this.handdleDate()
}, 10000)
},
methods:{
handdleDate(){
let arr = String(this.Number).split('')
this.NumberList=[]
arr.forEach(item => {
const model = {}
const baseArr = JSON.parse(JSON.stringify(this.numModels))
model.isMove = false;
for (let i = 0; i < parseInt(item) + 1; i++) {
baseArr.push(i)
}
model.num = baseArr;
this.NumberList.push(model);
this.isMove = true;
setTimeout(() => {
this.isMove = false
}, 3000)
});
}
}
}
</script>
<style lang="" scoped>
.main{
display: flex;
}
.move-num{
width:30px;height:40px;
background:red;
overflow: hidden;
margin-right:10px;
line-height: 40px;
color:#fff;
position: relative;
overflow: hidden;
}
.move-num div {
position: absolute;
width: 100%;
height: auto;
}
.move-num div a {
color: #ffffff;
display: block;
position: absolute;
left: 10px;
bottom: calc(100% - 45px);
}
.num-move {
width: 100%;
display: block;
margin: 3px 0;
}
.move-an {
animation:mymove 3s infinite linear forwards;
-webkit-animation:mymove 3s infinite linear forwards;
}
.num-move {
width: 100%;
display: block;
margin: 3px 0;
}
@keyframes mymove {
0% {bottom: 3px;}
100% {bottom: calc(100% - 40px)}
}
</style>
關(guān)于vue.js組件的教程,請大家點擊專題vue.js組件學(xué)習(xí)教程進行學(xué)習(xí)。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue 點擊按鈕實現(xiàn)動態(tài)掛載子組件的方法
今天小編就為大家分享一篇vue 點擊按鈕實現(xiàn)動態(tài)掛載子組件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
Vue3使用ResizeObserver監(jiān)聽元素的尺寸寬度變化
要監(jiān)聽 div 寬度的變化,可以使用 ResizeObserver 接口,ResizeObserver 允許你觀察一個或多個元素的尺寸變化,并在發(fā)生變化時執(zhí)行回調(diào)函數(shù),所以本文給大家介紹了Vue3如何使用ResizeObserver監(jiān)聽元素的尺寸寬度變化,需要的朋友可以參考下2024-08-08
基于前端VUE+ElementUI實現(xiàn)table行上移或下移功能(支持跨頁移動)
有時候需要前端實現(xiàn)上移和下移功能,下面這篇文章主要給大家介紹了關(guān)于如何基于前端VUE+ElementUI實現(xiàn)table行上移或下移(支持跨頁移動)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
Vue.js構(gòu)建你的第一個包并在NPM上發(fā)布的方法步驟
這篇文章主要介紹了Vue.js構(gòu)建你的第一個包并在NPM上發(fā)布的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05

