UniApp是一款基于Vue.js開發(fā)的跨平臺開發(fā)框架,可以幫助開發(fā)者快速構(gòu)建跨平臺應(yīng)用。在UniApp中,路由跳轉(zhuǎn)動畫是一個常見的需求,本文將介紹如何在UniApp中實現(xiàn)路由跳轉(zhuǎn)動畫,并提供具體的代碼示例。
UniApp提供了多種路由跳轉(zhuǎn)的方式,包括navigateTo、redirectTo、switchTab等。不同的跳轉(zhuǎn)方式可能會有不同的動畫效果,我們可以根據(jù)需求選擇合適的跳轉(zhuǎn)方式來實現(xiàn)動畫效果。
下面以navigateTo為例,介紹如何在UniApp中實現(xiàn)路由跳轉(zhuǎn)動畫。
首先,在App.vue中配置一個全局的動畫樣式,在頁面跳轉(zhuǎn)時統(tǒng)一調(diào)用該樣式。可以在App.vue的c9ccee2e6ea535a969eb3f532ad9fe89中添加以下代碼:
.page-enter {
opacity: 0;
transform: translateX(100%);
}
.page-enter-active {
opacity: 1;
transform: translateX(0);
transition: all 0.3s;
}
.page-leave {
opacity: 1;
transform: translateX(0);
}
.page-leave-active {
opacity: 0;
transform: translateX(-100%);
transition: all 0.3s;
}
登錄后復(fù)制
上述代碼中,.page-enter是頁面進入動畫的起始樣式,.page-enter-active是頁面進入動畫的結(jié)束樣式;.page-leave是頁面離開動畫的起始樣式,.page-leave-active是頁面離開動畫的結(jié)束樣式。
接下來,在需要跳轉(zhuǎn)的頁面中,使用Vue的<transition>組件包裹需要跳轉(zhuǎn)的內(nèi)容,在其中添加動畫的class。
假設(shè)我們有一個頁面叫做detail.vue,其內(nèi)容如下:
<template>
<view>
<button @click="jumpToHome">跳轉(zhuǎn)到Home頁</button>
</view>
</template>
<script>
export default {
methods: {
jumpToHome() {
uni.navigateTo({
url: '/pages/home/home',
success: () => {
// 跳轉(zhuǎn)成功后觸發(fā)動畫
uni.$emit('page-enter');
}
});
}
}
};
</script>
<style scoped>
.page-enter {
opacity: 0;
transform: translateX(100%);
}
.page-enter-active {
opacity: 1;
transform: translateX(0);
transition: all 0.3s;
}
.page-leave {
opacity: 1;
transform: translateX(0);
}
.page-leave-active {
opacity: 0;
transform: translateX(-100%);
transition: all 0.3s;
}
</style>
登錄后復(fù)制
上述代碼中,我們在按鈕的點擊事件中通過uni.navigateTo跳轉(zhuǎn)到Home頁,并在跳轉(zhuǎn)成功后觸發(fā)動畫。為了實現(xiàn)動畫效果,我們在按鈕的頁面中也添加了動畫的樣式。
在Home頁的home.vue中,我們也需要添加動畫樣式,并在頁面加載時觸發(fā)動畫。
<template>
<transition name="page">
<view>
<text>這是Home頁</text>
</view>
</transition>
</template>
<script>
export default {
mounted() {
// 頁面加載完成后觸發(fā)動畫
uni.$emit('page-enter');
}
};
</script>
<style scoped>
.page-enter {
opacity: 0;
transform: translateX(100%);
}
.page-enter-active {
opacity: 1;
transform: translateX(0);
transition: all 0.3s;
}
.page-leave {
opacity: 1;
transform: translateX(0);
}
.page-leave-active {
opacity: 0;
transform: translateX(-100%);
transition: all 0.3s;
}
</style>
登錄后復(fù)制
上述代碼中,我們在Home頁的mounted生命周期鉤子函數(shù)中觸發(fā)了動畫效果。
通過以上配置,我們可以實現(xiàn)在UniApp中頁面跳轉(zhuǎn)時的動畫效果。當點擊跳轉(zhuǎn)按鈕時,當前頁面會向右滑動并漸變消失,同時新頁面會從右側(cè)滑入并漸變出現(xiàn),給用戶一種流暢的跳轉(zhuǎn)體驗。
需要注意的是,在實際項目中,可以根據(jù)需求自行配置動畫效果,如改變動畫的方向、時間、緩動函數(shù)等。另外,UniApp還提供了其他路由跳轉(zhuǎn)方式和動畫配置接口,開發(fā)者可以根據(jù)自己的需求來選擇合適的方式實現(xiàn)路由跳轉(zhuǎn)動畫。
參考文檔:https://uniapp.dcloud.io/api/router?id=navigateto






