Vue進(jìn)階之利用transition標(biāo)簽實(shí)現(xiàn)頁面跳轉(zhuǎn)動(dòng)畫
一、前言
在Vue項(xiàng)目開發(fā)過程中,應(yīng)用全家桶vue-router實(shí)現(xiàn)路由跳轉(zhuǎn),且頁面前進(jìn)、后退跳轉(zhuǎn)過程中,分別對應(yīng)不同的切換動(dòng)畫。vue-router 切換頁面時(shí)怎么設(shè)置過渡動(dòng)畫?
首先,需要考慮以下問題:
如何判斷切換路由時(shí)是前進(jìn)還是后退?
每次切換時(shí)向左向右切換動(dòng)畫如何實(shí)現(xiàn)?
可通過以下解決方案實(shí)現(xiàn):
給各個(gè)頁面定義層級,在切換路由時(shí)判斷用戶是進(jìn)入哪一層頁面。如果用戶進(jìn)入更高層級路由那么做前進(jìn)動(dòng)畫,如果用戶退到低層級路由那么做后退動(dòng)畫。
二、方案實(shí)現(xiàn)
// router/index.js
import VueRouter from 'vue-router'
import Home from '../components/home/home'
import User from '../components/user/user'
var router = new VueRouter({
routes:[{
name:'test',
path:'/',
meta:{index:0},//meta對象的index用來定義當(dāng)前路由的層級,由小到大,由低到高
component:{
template:'<div>test</div>'
}
},{
name:'home',
path:'/home',
meta:{index:1},
component:Home
},{
name:'user',
path:'/user/:id',
meta:{index:2},
component:User
}]
});通過watch監(jiān)聽函數(shù)監(jiān)控路由跳轉(zhuǎn),判斷切換頁面之間的層級關(guān)系,并以此來判斷路由前進(jìn)或者后退。
<template>
<div id="app">
<transition :name="transitionName">
<router-view></router-view>
</transition>
</div>
</template>
<script>
export default {
name: 'App',
data(){
return {
transitionName:''
}
},
watch: {//使用watch 監(jiān)聽$router的變化
$route(to, from) {
//如果to索引大于from索引,判斷為前進(jìn)狀態(tài),反之則為后退狀態(tài)
if(to.meta.index > from.meta.index){
//設(shè)置動(dòng)畫名稱
this.transitionName = 'slide-left';
}else{
this.transitionName = 'slide-right';
}
}
}
}
</script>
<style>
// 編寫slide-left 和 slide-right 類的動(dòng)畫
.slide-right-enter-active,
.slide-right-leave-active,
.slide-left-enter-active,
.slide-left-leave-active {
will-change: transform;
transition: all 500ms;
position: absolute;
}
.slide-right-enter {
opacity: 0;
transform: translate3d(-100%, 0, 0);
}
.slide-right-leave-active {
opacity: 0;
transform: translate3d(100%, 0, 0);
}
.slide-left-enter {
opacity: 0;
transform: translate3d(100%, 0, 0);
}
.slide-left-leave-active {
opacity: 0;
transform: translate3d(-100%, 0, 0);
}
</style>三、延伸閱讀 transition標(biāo)簽
transition標(biāo)簽是Vue內(nèi)置動(dòng)畫標(biāo)簽,負(fù)責(zé)在插入、更新、移除DOM元素時(shí),給元素添加樣式
注意:transition標(biāo)簽只能包含一個(gè)元素,且包含的標(biāo)簽需要設(shè)置v-if/v-show控制元素顯示
動(dòng)畫樣式類名
Vue2
進(jìn)入: .v-enter 始狀態(tài)、 .v-enter-active 進(jìn)入動(dòng)畫、 .v-enter-to 末狀態(tài)
離開:.v-leave 始狀態(tài)、.v-leave-active 離開動(dòng)畫、v-leave-to 末狀態(tài)
Vue3
進(jìn)入:.v-enter-from 始狀態(tài)、.v-enter-active 進(jìn)入動(dòng)畫、.v-enter-to 末狀態(tài)
離開:.v-leave-from 始狀態(tài)、.v-leave-active 離開動(dòng)畫、.v-leave-to 末狀態(tài)

四、拓展閱讀
《官方文檔》
到此這篇關(guān)于Vue進(jìn)階之利用transition標(biāo)簽實(shí)現(xiàn)頁面跳轉(zhuǎn)動(dòng)畫的文章就介紹到這了,更多相關(guān)Vue transition內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue.js中for循環(huán)如何實(shí)現(xiàn)異步方法同步執(zhí)行
這篇文章主要介紹了vue.js中for循環(huán)如何實(shí)現(xiàn)異步方法同步執(zhí)行問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Vue后臺中優(yōu)雅書寫狀態(tài)標(biāo)簽的方法實(shí)例
在Vue中,我們可以非常便捷地通過標(biāo)簽實(shí)現(xiàn)狀態(tài)的保存,這篇文章主要給大家介紹了關(guān)于Vue后臺中如何優(yōu)雅的書寫狀態(tài)標(biāo)簽的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-08-08
前端配合后端實(shí)現(xiàn)Vue路由權(quán)限的方法實(shí)例
一開始我還以為vue的路由只能用在工程化的項(xiàng)目里面,其實(shí)不然,下面這篇文章主要給大家介紹了關(guān)于前端配合后端實(shí)現(xiàn)Vue路由權(quán)限的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
vue元素實(shí)現(xiàn)動(dòng)畫過渡效果
這篇文章主要介紹了vue元素實(shí)現(xiàn)動(dòng)畫過渡效果,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07
vue3在router中使用store報(bào)錯(cuò)的完美解決方案
這篇文章主要介紹了vue3在router中使用store報(bào)錯(cuò)解決方案,就是需要在實(shí)例化一下,因?yàn)樵诰幾grouter的時(shí)候pinia還未被實(shí)例化,文中補(bǔ)充介紹了vue3中router和store詳細(xì)使用教程方法,感興趣的朋友一起看看吧2023-11-11
vue前端路由以及vue-router兩種模式實(shí)例詳解
路由這個(gè)概念最先是后端出現(xiàn)的,下面這篇文章主要給大家介紹了關(guān)于vue前端路由以及vue-router兩種模式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
淺析Vue3中通過v-model實(shí)現(xiàn)父子組件的雙向數(shù)據(jù)綁定及利用computed簡化父子組件雙向綁定
這篇文章主要介紹了淺析Vue3中通過v-model實(shí)現(xiàn)父子組件的雙向數(shù)據(jù)綁定及利用computed簡化父子組件雙向綁定,需要的朋友可以參考下2022-12-12
在Vue中實(shí)現(xiàn)圖表數(shù)據(jù)的動(dòng)態(tài)展示的示例代碼
隨著數(shù)據(jù)可視化技術(shù)的發(fā)展,圖表在前端開發(fā)中扮演著越來越重要的角色,Vue.js 作為一個(gè)流行的前端框架,以其靈活性和易用性,成為了實(shí)現(xiàn)圖表動(dòng)態(tài)展示的理想選擇,在這篇博客中,我們將學(xué)習(xí)如何在 Vue 3 中實(shí)現(xiàn)動(dòng)態(tài)展示圖表數(shù)據(jù),需要的朋友可以參考下2024-11-11

