隨著行動裝置應用的普及,豐富多彩的動態效果成為了許多應用開發的必備要素。其中,轉場動畫就是提升使用者使用體驗的重要手段。在uniapp這個跨平台應用程式開發框架中,實作轉場動畫也非常簡單易行。
uniapp中的轉場動畫可以分為兩類:原生轉場和自訂轉場。原生轉場就是系統預設的轉場效果,而自訂轉場則可以依照自己的需求進行客製化。
一、原生轉場動畫
uniapp中原生轉場動畫的實作非常簡單,只需要在pages.json
設定檔中加入"animationType "
屬性即可。以下是幾種常見的轉場動畫效果:
- Push
在A頁面中透過uni.navigateTo
跳到B頁面時,可以設定轉場動畫為Push:
uni.navigateTo({ url: '/pages/b-page/b-page', animationType: 'push', animationDuration: 500 });
效果如下:
- #Pop
uni.navigateBack回到A頁面時,可以設定轉場動畫為Pop:
uni.navigateBack({ animationType: 'pop', animationDuration: 500 });效果如下:
Fade
可以設定轉場動畫為漸隱漸現的Fade效果:uni.navigateTo({ url: '/pages/b-page/b-page', animationType: 'fade', animationDuration: 500 });

None
- 效果如下:
uni.navigateTo({ url: '/pages/b-page/b-page', animationType: 'none', animationDuration: 500 });
# #二、自訂轉場動畫
uniapp中的自訂轉場動畫需要結合
uni-app-plus外掛程式和
vue-router
- 安裝uni-app-plus外掛
uni-app-plus外掛程式可以讓我們在uniapp中使用原生的一些API和插件,其中就包含iOS中
UIKit
android.view。因此,在使用自訂轉場動畫時,我們需要使用這個插件。
- 修改vue-router設定
npm install uni-app-plus --save-dev
首先,我們需要在
router .js設定檔中新增路由守衛,這樣我們才能捕捉到從A頁面跳到B頁面的事件,從而實現自訂轉場動畫。
const router = new VueRouter({ mode: 'history', base: process.env.BASE_URL, routes }); router.beforeEach((to, from, next) => { if (to.meta.animation === 'custom') { const pages = getCurrentPages(); const currentPage = pages[pages.length - 1]; const prevPage = pages[pages.length - 2]; currentPage.animation = 'slide-left'; prevPage.animation = 'slide-right'; } next(); }); export default router;在這段程式碼中,我們新增了一個路由守衛
beforeEach
#,當跳到的頁面配置了自訂轉場動畫時,就將目前頁面和上一個頁面的動畫效果設定為左滑和右滑,這樣就可以實現自訂轉場動畫了。- 實作自訂轉場動畫
-
在
App.vue - 檔案中,我們可以透過監聽頁面切換事件來實現自訂轉場動畫。首先,我們在
mounted
生命週期中加入以下程式碼:<pre class='brush:php;toolbar:false;'>mounted() { if (uni.getSystemInfoSync().platform === 'ios') { const router = this.$router; router.beforeEach(function(to, from, next) { if (from.meta.animation === 'custom') { UniViewJSBridge.publishHandler('animation', { type: 'set', pageParam: { animationEnabled: true } }, function() { router.app.animation = uni.createFromIconfontCN({ scriptUrl: "//at.alicdn.com/t/font_2581006_ourmsf7tpoi.js" }).css({ animationDuration: '0.4s', animationTimingFunction: 'ease-in' }).toStyle(); next(); }) } else { router.app.animation = ''; next(); } }); UniViewJSBridge.subscribeHandler('animation', function(dat) { if (dat.type === 'finish') { router.app.animation = ''; } }); } },</pre>
以上程式碼主要實現了以下功能:
偵測目前裝置是否為iOS裝置(因為Android裝置預設支援自訂轉場動畫),如果是則執行下列步驟。如果不是,則直接跳過本流程。 在路由變更之前透過
傳送訊息給原生,告訴它需要開啟動畫。 監聽
傳送的訊息,當原生的動畫執行結束後,將router.app.animation
賦為空字串,代表動畫效果已經結束。
然後,在
標籤中加入以下程式碼:
<view :class="{ 'animated': animation }">
<router-view class="page"></router-view>
</view>
animate.css
來實現動畫效果,因此需要在頁面中引入:<link rel="stylesheet" href="//cdn.bootcss.com/animate.css/3.5.2/animate.min.css">最後,在
<script><code>標籤中添加以下程式碼:<pre class='brush:php;toolbar:false;'>data() { return { animation: '' }; },</pre><code>在進入A頁面前,將transType</script>
設定為###"custom"###即可:###uni.navigateTo({ url: '/pages/b-page/b-page', animationType: 'pop', animationDuration: 500, events: { finish: () => { console.log('finish'); } }, complete: () => { setTimeout(() => { this.animation = ''; }, 500); }, fail: () => { console.log('fail'); }, transType: 'custom' });###這樣,我們就完成了自訂轉場動畫的完整流程。在實際開發中,你也可以根據自己的需求來定義動畫類型和動畫效果。 ######總結######在uniapp中,實現轉場動畫非常簡單,我們可以使用原生的轉場動畫,也可以透過結合###uni-app-plus###外掛程式和###vue-router###路由元件來實作自訂轉場動畫。在開發過程中,我們要根據實際需求選擇不同的轉場動畫效果,以提升使用者的使用體驗。 ###
以上是uniapp轉場動畫怎麼做的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

記事本++7.3.1
好用且免費的程式碼編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能