Vue路由切換時(shí)的左滑和右滑效果示例
如何實(shí)現(xiàn)Vue路由切換時(shí)的左滑和右滑效果,因?yàn)樵髡遳stbhuangyi老師的兩個(gè)慕課項(xiàng)目中都沒(méi)有這樣的效果,于是突發(fā)奇想要做這個(gè)功能,看了看QQ、微信都沒(méi)這樣的效果,最后發(fā)現(xiàn)SegmentFault(思否) 和掘金兩個(gè)app都有這樣的效果,就以此為參考開始做了。
transition
首先看看官網(wǎng) 淡入淡出動(dòng)畫的例子:
<div id="demo"> <button v-on:click="show = !show"> Toggle </button> <transition name="fade"> <p v-if="show">hello</p> </transition> </div>
new Vue({ el: '#demo', data: { show: true } })
.fade-enter-active, .fade-leave-active { transition: opacity .5s; } .fade-enter, .fade-leave-to { opacity: 0; }
左右切換效果
CSS部分
我們要實(shí)現(xiàn)的是左右切換的效果,所以要定義兩種動(dòng)畫(左滑和右滑)
.transitionBody{ transition: all 0.15s ease; /*定義動(dòng)畫的時(shí)間和過(guò)渡效果*/ } .transitionLeft-enter, .transitionRight-leave-active { -webkit-transform: translate(100%, 0); transform: translate(100%, 0); /*當(dāng)左滑進(jìn)入右滑進(jìn)入過(guò)渡動(dòng)畫*/ } .transitionLeft-leave-active, .transitionRight-enter { -webkit-transform: translate(-100%, 0); transform: translate(-100%, 0); }
HTML部分
這里的 keep-alive 是Vue的內(nèi)置組件,能在組件切換過(guò)程中將狀態(tài)保留在內(nèi)存中,防止重復(fù)渲染DOM,我們要把它也包裹在transition標(biāo)簽內(nèi),否則頁(yè)面將重新渲染,切換的動(dòng)畫也會(huì)卡頓
<transition :name="transitionName"> <keep-alive> <router-view class="transitionBody"></router-view> </keep-alive> </transition>
JS部分
在Vue組件中,data必須是一個(gè)函數(shù),將對(duì)象 {transitionName: ‘transitionLeft'} 掛載到Vue實(shí)例中,然后我們可以監(jiān)聽路由的 to 和 from 來(lái)判斷此時(shí)應(yīng)該左滑還是右滑,來(lái)動(dòng)態(tài)切換transition的name值。
export default { data() { return { transitionName: 'transitionLeft' }; }, watch: { '$route' (to, from) { const arr = ['/goods','/ratings','/seller']; const compare = arr.indexOf(to.path)>arr.indexOf(from.path); this.transitionName = compare ? 'transitionLeft' : 'transitionRight'; } } }
點(diǎn)擊鏈接體驗(yàn)一下: https://zc95.github.io/demo/vue-sell
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript的MVVM庫(kù)Vue.js入門學(xué)習(xí)筆記
這篇文章主要介紹了JavaScript的MVVM庫(kù)Vue.js入門學(xué)習(xí)筆記,Vue.js是一個(gè)新興的js庫(kù),主要用于實(shí)現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件,需要的朋友可以參考下2016-05-05Vue 2.0入門基礎(chǔ)知識(shí)之內(nèi)部指令詳解
這篇文章主要介紹了Vue 2.0入門基礎(chǔ)知識(shí)之內(nèi)部指令知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值 ,需要的朋友可以參考下2017-10-10vue2+element-ui+nodejs實(shí)現(xiàn)圖片上傳和修改圖片到數(shù)據(jù)庫(kù)的方法
在Web開發(fā)中經(jīng)常需要使用圖片,有時(shí)候需要對(duì)圖片進(jìn)行上傳,這篇文章主要給大家介紹了關(guān)于vue2+element-ui+nodejs實(shí)現(xiàn)圖片上傳和修改圖片到數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04vue+element?DatePicker實(shí)現(xiàn)日期選擇器封裝
Vue?Element?DatePicker是一款基于Vue.js的日期選擇控件,它提供了豐富的日期選擇功能,支持日期范圍選擇、日期格式化、自定義日期格式、快捷選擇等功能,極大地提高了用戶的體驗(yàn),是開發(fā)者必備的日期選擇控件。2023-02-02Django Vue實(shí)現(xiàn)動(dòng)態(tài)菜單和動(dòng)態(tài)權(quán)限
本文主要介紹了Django Vue實(shí)現(xiàn)動(dòng)態(tài)菜單和動(dòng)態(tài)權(quán)限,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Vue+tracking.js 實(shí)現(xiàn)前端人臉檢測(cè)功能
這篇文章主要介紹了Vue+tracking.js 實(shí)現(xiàn)前端人臉檢測(cè)功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04vue實(shí)現(xiàn)導(dǎo)航菜單和編輯文本的示例代碼
這篇文章主要介紹了vue實(shí)現(xiàn)導(dǎo)航菜單和編輯文本功能的方法,文中示例代碼非常詳細(xì),幫助大家更好的參考和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07Vue組件之極簡(jiǎn)的地址選擇器的實(shí)現(xiàn)
這篇文章主要介紹了Vue組件之極簡(jiǎn)的地址選擇器的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05詳解vue中點(diǎn)擊空白處隱藏div的實(shí)現(xiàn)(用指令實(shí)現(xiàn))
本篇文章主要介紹了詳解vue中點(diǎn)擊空白處隱藏div的實(shí)現(xiàn)(用指令實(shí)現(xiàn)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04