亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue router自動(dòng)判斷左右翻頁(yè)轉(zhuǎn)場(chǎng)動(dòng)畫效果

 更新時(shí)間:2017年10月10日 16:21:38   作者:前端阿小  
最近公司項(xiàng)目比較少終于有空來(lái)記錄一下自己對(duì)vue-router的一些小小的使用心得,本文給大家分享vue router自動(dòng)判斷左右翻頁(yè)轉(zhuǎn)場(chǎng)動(dòng)畫效果,感興趣的朋友一起看看吧

前段時(shí)間做了一個(gè)移動(dòng)端spa項(xiàng)目,技術(shù)基于 :vue + vue-router + vuex + mint-ui

因?yàn)槭褂昧藇ue-cli腳手架的webpack模版,所有頁(yè)面都以.vue為后綴的文件作為一個(gè)組件

最近公司項(xiàng)目比較少終于有空來(lái)記錄一下自己對(duì)vue-router的一些小小的使用心得,

  一般的移動(dòng)端口單頁(yè)應(yīng)用在跳轉(zhuǎn)頁(yè)面時(shí)候會(huì)有相應(yīng)的轉(zhuǎn)場(chǎng)動(dòng)畫,比如:

  1. 從當(dāng)前一級(jí)頁(yè)面跳轉(zhuǎn)二級(jí)頁(yè)面需要展示的轉(zhuǎn)場(chǎng)動(dòng)畫是一級(jí)頁(yè)面向屏幕左邊移動(dòng)消失的同時(shí),

   二級(jí)頁(yè)面從屏幕的右邊向左邊移動(dòng)出現(xiàn)。(類似翻書翻到下一頁(yè)的效果)

  2. 從當(dāng)前二級(jí)頁(yè)面跳回一級(jí)頁(yè)面需要展示的轉(zhuǎn)場(chǎng)動(dòng)畫是二級(jí)頁(yè)面向屏幕右邊移動(dòng)消失的同時(shí),

   一級(jí)頁(yè)面從屏幕的左邊向右邊移動(dòng)出現(xiàn)。類似(翻書翻回到上一頁(yè)的效果)

  但是出現(xiàn)了一個(gè)問(wèn)題:如何判斷當(dāng)前頁(yè)面和將要跳轉(zhuǎn)頁(yè)面之間的層級(jí)關(guān)系呢?

我的解決辦法是:創(chuàng)建頁(yè)面 (組件)時(shí),在定義頁(yè)面的router里通過(guò)設(shè)置頁(yè)面的path(訪問(wèn)路徑 )屬性來(lái)區(qū)分組件之間的層級(jí)關(guān)系。

比如一個(gè)一級(jí)頁(yè)面 (組件) ‘A' 的訪問(wèn)路徑為 ‘/A' 。他的二級(jí)頁(yè)面 ‘B' 的訪問(wèn)路徑為 ‘/A/B' .

  那么在跳轉(zhuǎn)頁(yè)面之前,只需要比較當(dāng)前頁(yè)面和將要跳轉(zhuǎn)到的頁(yè)面的路徑深度就可以動(dòng)態(tài)設(shè)置轉(zhuǎn)場(chǎng)動(dòng)畫了。

比如 ‘/A/B'的深度 >  ‘/A' 的深度那么 從B頁(yè)面跳轉(zhuǎn)到A頁(yè)面就應(yīng)該是 效果2:(翻書翻回到上一頁(yè)的效果).

一 。首先父頁(yè)面

home.vue:

<!-- keepAlList是用來(lái)動(dòng)態(tài)判斷組件是否需要keep-alive,建議保存到vuex中作為全局變量,至于下方的css動(dòng)畫,看官可以按照喜好自由修改-->
<transition :name="transNa">
 <keep-alive :include="keepAlList">
 <router-view class="child-view"></router-view>
 </keep-alive>
</transition>
<style scoped>
.child-view {
 position: absolute;
 width: 100%;
 height: 100%;
 transition: all .5s ease;
 -webkit-transition: all .5s ease;
 -moz-transition: all .5s ease;
}
.rightin-enter,
.leftin-leave-active {
 opacity: 0;
 transform: translate3d(50% 0, 0);
 -webkit-transform: translate3d(50%, 0, 0);
 -moz-transform: translate3d(50%, 0, 0);
}
.leftin-enter,
.rightin-leave-active {
 opacity: 0;
 transform: translate3d(-50% 0, 0);
 -webkit-transform: translate3d(-50%, 0, 0);
 -moz-transform: translate3d(-50%, 0, 0);
}
</style>

二 。其次附上我的main.js片段(用來(lái)在跳轉(zhuǎn)頁(yè)面之前動(dòng)態(tài)設(shè)置轉(zhuǎn)場(chǎng)動(dòng)畫)

  main.js:

//進(jìn)入路由之前設(shè)置攔截器
let noLoginList = ["login", "register", "forget", "home", "classify", "goodsDetial"];
router.routeInfo.beforeEach((to, from, next) => {
 let user = sessionStorage.getItem('user');
 //如果要去登錄頁(yè)面
 if (noLoginList.indexOf(to.name) >= 0) {
  if (!user || user == '') {
   //未登錄的狀態(tài)通行
   next();
   return;
  } else {
   if (["login", "register", "forget"].indexOf(to.name) >= 0) {
    //已登錄的狀態(tài)去首頁(yè)
    next({
     name: 'home'
    });
    return;
   } else {
    //已登錄的狀態(tài)去首頁(yè)
    next();
    return;
   }
  }
 } else {
  //去登錄頁(yè)面以外的頁(yè)面(以下是本文關(guān)鍵代碼)
  if (user && user != '') {
   //判斷是否為需要緩存組件,如果是添加組件名到數(shù)組
   if (to.meta.keepAlive) {
    const toName = to.name;
    let keepLi = store.getters.getKeepAlList;
    keepLi.indexOf(toName) < 0 ? keepLi.push(toName) : '';
    store.commit('SET_KEEPALLIST', keepLi);
   }
   //根據(jù)路徑名深度設(shè)置轉(zhuǎn)場(chǎng)動(dòng)畫類型
   store.commit('SET_TRANSNA', (to.path.split('/').length < from.path.split('/').length ? 'leftin' : 'rightin'));
   next();
  } else {
   let toWhere = router.nameList.indexOf(to.name) >= 0 ? to : {name: 'home'};
   next({
    name: 'login',
    params: {
     jumpTo: {
      name: toWhere.name,
      params: toWhere.params,
      query: toWhere.query,
     },
    }
   });
  }
 }
});

總結(jié)

以上所述是小編給大家介紹的vue router自動(dòng)判斷左右翻頁(yè)轉(zhuǎn)場(chǎng)動(dòng)畫效果,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 如何利用vue實(shí)現(xiàn)css過(guò)渡和動(dòng)畫

    如何利用vue實(shí)現(xiàn)css過(guò)渡和動(dòng)畫

    過(guò)渡Vue在插入、更新或者移除 DOM 時(shí),提供多種不同方式的應(yīng)用過(guò)渡效果這篇文章主要給大家介紹了關(guān)于如何利用vue實(shí)現(xiàn)css過(guò)渡和動(dòng)畫的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • 教你如何開發(fā)Vite3插件構(gòu)建Electron開發(fā)環(huán)境

    教你如何開發(fā)Vite3插件構(gòu)建Electron開發(fā)環(huán)境

    這篇文章主要介紹了如何開發(fā)Vite3插件構(gòu)建Electron開發(fā)環(huán)境,文中給大家提到了如何讓 Vite 加載 Electron 的內(nèi)置模塊和 Node.js 的內(nèi)置模塊,需要的朋友可以參考下
    2022-11-11
  • vue組件間的參數(shù)傳遞實(shí)例詳解

    vue組件間的參數(shù)傳遞實(shí)例詳解

    這篇文章主要介紹了vue組件間的參數(shù)傳遞 ,需要的朋友可以參考下
    2019-04-04
  • Vue Router的手寫實(shí)現(xiàn)方法實(shí)現(xiàn)

    Vue Router的手寫實(shí)現(xiàn)方法實(shí)現(xiàn)

    這篇文章主要介紹了Vue Router的手寫實(shí)現(xiàn)方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 深入理解Vue 的條件渲染和列表渲染

    深入理解Vue 的條件渲染和列表渲染

    本篇文章主要介紹了深入理解Vue 的條件渲染和列表渲染,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • vue在.js文件中引入store和router問(wèn)題

    vue在.js文件中引入store和router問(wèn)題

    這篇文章主要介紹了vue在.js文件中引入store和router問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 一篇帶你搞懂Vue中的自定義指令

    一篇帶你搞懂Vue中的自定義指令

    自定義指令,是Vue提供的一種擴(kuò)展和定制的機(jī)制,使開發(fā)者能夠在組件中直接操作DOM、處理事件、添加樣式等,并提供了與第三方庫(kù)集成的方式,定義指令使得Vue在處理交互和DOM操作時(shí)更加靈活和強(qiáng)大,本文將帶大家搞懂Vue中的自定義指令,需要的朋友可以參考下
    2023-07-07
  • Vue中的計(jì)算屬性和axios基本使用回顧

    Vue中的計(jì)算屬性和axios基本使用回顧

    這篇文章主要介紹了Vue中的計(jì)算屬性和axios基本使用回顧,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue父子組件進(jìn)行通信方式原來(lái)是這樣的

    vue父子組件進(jìn)行通信方式原來(lái)是這樣的

    這篇文章主要為大家詳細(xì)介紹了vue父子組件進(jìn)行通信方式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • 在vue項(xiàng)目中引用Iview的方法

    在vue項(xiàng)目中引用Iview的方法

    iView 是一套基于 Vue.js 的開源 UI 組件庫(kù),主要服務(wù)于 PC 界面的中后臺(tái)產(chǎn)品。這篇文章主要介紹了在vue項(xiàng)目中引用Iview的方法,需要的朋友可以參考下
    2018-09-09

最新評(píng)論