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都有這樣的效果,就以此為參考開(kāi)始做了。
transition
首先看看官網(wǎng) 淡入淡出動(dòng)畫(huà)的例子:
<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)畫(huà)(左滑和右滑)
.transitionBody{
transition: all 0.15s ease; /*定義動(dòng)畫(huà)的時(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)畫(huà)*/
}
.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à)也會(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)聽(tīng)路由的 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)文章
Vue實(shí)現(xiàn)電商網(wǎng)站商品放大鏡效果示例
這篇文章主要為大家介紹了Vue實(shí)現(xiàn)電商網(wǎng)站商品放大鏡效果示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
vue實(shí)現(xiàn)壓縮圖片預(yù)覽并上傳功能(promise封裝)
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)壓縮圖片預(yù)覽并上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
Vue中使用video.js實(shí)現(xiàn)截圖和視頻錄制與下載
這篇文章主要為大家詳細(xì)介紹了Vue中如何使用video.js實(shí)現(xiàn)截圖和視頻錄制與下載,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03
Vue?關(guān)于$emit與props的使用示例代碼
父組件使用 props 把數(shù)據(jù)傳給子組件,子組件使用 $emit 觸發(fā)父組件的自定義事件,今天通過(guò)示例給大家詳細(xì)介紹下Vue?關(guān)于$emit與props的使用,感興趣的朋友一起看看吧2022-03-03
Vue的export?default和帶返回值的data()及@符號(hào)的用法說(shuō)明
這篇文章主要介紹了Vue的export?default和帶返回值的data()及@符號(hào)的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03

