Vue 解決路由過渡動畫抖動問題(實例詳解)
前言
Vue-Router
作為 Vue
的核心模塊,它為我們提供了基于組件的路由配置、路由參數(shù)等功能,讓單頁面應(yīng)用變得更易于管理。良好的路由管理尤為重要,比如路由攔截、路由懶加載、路由權(quán)限等都在開發(fā)中起著至關(guān)重要的作用。同時路由還支持視圖過渡效果,沒有添加過渡動畫的路由切換會感覺很生硬,為了提高用戶體驗,路由過渡還是很有必要的。畢竟做出來,自己看著也舒服。
過渡動效文檔:https://cn.vuejs.org/v2/guide/transitions.html
過渡動畫抖動
代碼片段
這里為路由添加一個淡入淡出的過渡效果
<div id="app"> <main class="app-main"> <Topbar /> <transition name="fade"> <router-view /> </transition> </main> </div> .fade-enter, .fade-leave-to{ visibility: hidden; opacity: 0; } .fade-enter-active, .fade-leave-active{ transition: opacity .2s ease; } .fade-enter-to, .fade-leave{ visibility: visible; opacity: 1; }
效果
圖中可以很明顯的看到,切換路由時,頁面會發(fā)生抖動,而且抖動的還不小,看著強(qiáng)迫癥都犯了。
那么問題來了,為什么會出現(xiàn)這種情況?
過程
發(fā)現(xiàn)問題
排除代碼問題后,想到的可能是布局問題引發(fā)的這種情況,于是在chrome的調(diào)試工具中,一邊切換路由一邊觀察布局的變化,終于找到了一點蹊蹺
仔細(xì)觀察html的結(jié)構(gòu),會發(fā)現(xiàn)在路由過渡的過程中是會同時存在兩個路由,一個是即將進(jìn)入的路由,一個是即將消失的路由,這時想到有沒有可能是其中一個路由占位導(dǎo)致抖動?
印證猜想
為了方便觀察布局情況,將過渡的時間調(diào)大到30s,再次重復(fù)上面的操作
在緩慢的過渡,可以更加清晰的看到,在切換到下一個路由(fade-enter-to)時,上一個路由(fade-leave-to)會占位使得下一個路由的位置下移,所以在快速過渡的情況才發(fā)生類似抖動的效果
既然問題找到了,那就找辦法來解決它!
解決問題
只需要給fade-leave-to路由添加 display:none
,讓其在消失時不占位就可以解決問題。當(dāng)然還可以使用定位來脫離文檔流來解決,但定位之后偏移量等都需要計算,不太推薦。
.fade-enter{ visibility: hidden; opacity: 0; } .fade-leave-to{ display: none; } .fade-enter-active, .fade-leave-active{ transition: opacity .2s ease; } .fade-enter-to, .fade-leave{ visibility: visible; opacity: 1; }
最后效果
總結(jié)
以上所述是小編給大家介紹的Vue 解決路由過渡動畫抖動問題,希望對大家有所幫助!
上一篇:Vue 實現(xiàn)簡易多行滾動"彈幕"效果
欄 目:JavaScript
本文標(biāo)題:Vue 解決路由過渡動畫抖動問題(實例詳解)
本文地址:http://mengdiqiu.com.cn/a1/JavaScript/9313.html
您可能感興趣的文章
- 01-10在Vue項目中使用Typescript的實現(xiàn)
- 01-10Vue中使用Lodop插件實現(xiàn)打印功能的簡單方法
- 01-10Vue filter 過濾當(dāng)前時間 實現(xiàn)實時更新效果
- 01-10Vuex實現(xiàn)數(shù)據(jù)共享的方法
- 01-10Vue+Node服務(wù)器查詢Mongo數(shù)據(jù)庫及頁面數(shù)據(jù)傳遞操作實例分析
- 01-10vue中根據(jù)時間戳判斷對應(yīng)的時間(今天 昨天 前天)
- 01-10Vue+Node實現(xiàn)的商城用戶管理功能示例
- 01-10vue實現(xiàn)拖拽效果
- 01-10vue圖片上傳組件使用詳解
- 01-10vue項目實現(xiàn)圖片上傳功能


閱讀排行
本欄相關(guān)
- 04-02javascript點線,點線的代碼
- 04-02javascript潛力,javascript強(qiáng)大嗎
- 04-02javascript替換字符串,js字符串的替換
- 04-02javascript移出,js 移入移出
- 04-02包含javascript舍的詞條
- 04-02javascript并行,深入理解并行編程 豆瓣
- 04-02javascript匿名,js匿名方法
- 04-02javascript警報,JavaScript警告
- 04-02javascript遮蓋,JavaScript遮蓋PC端頁面
- 04-02javascript前身,javascript的前身
隨機(jī)閱讀
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 04-02jquery與jsp,用jquery
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-10C#中split用法實例總結(jié)