最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue router自動判斷左右翻頁轉(zhuǎn)場動畫效果

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

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

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

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

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

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

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

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

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

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

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

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

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

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

一 。首先父頁面

home.vue:

<!-- keepAlList是用來動態(tài)判斷組件是否需要keep-alive,建議保存到vuex中作為全局變量,至于下方的css動畫,看官可以按照喜好自由修改-->
<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片段(用來在跳轉(zhuǎn)頁面之前動態(tài)設(shè)置轉(zhuǎn)場動畫)

  main.js:

//進(jìn)入路由之前設(shè)置攔截器
let noLoginList = ["login", "register", "forget", "home", "classify", "goodsDetial"];
router.routeInfo.beforeEach((to, from, next) => {
 let user = sessionStorage.getItem('user');
 //如果要去登錄頁面
 if (noLoginList.indexOf(to.name) >= 0) {
  if (!user || user == '') {
   //未登錄的狀態(tài)通行
   next();
   return;
  } else {
   if (["login", "register", "forget"].indexOf(to.name) >= 0) {
    //已登錄的狀態(tài)去首頁
    next({
     name: 'home'
    });
    return;
   } else {
    //已登錄的狀態(tài)去首頁
    next();
    return;
   }
  }
 } else {
  //去登錄頁面以外的頁面(以下是本文關(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)場動畫類型
   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自動判斷左右翻頁轉(zhuǎn)場動畫效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • vue+element-ui中form輸入框無法輸入問題的解決方法

    vue+element-ui中form輸入框無法輸入問題的解決方法

    很多初次接觸element-ui的同學(xué),在用到element form組件時(shí)可能會遇到input框無法輸入文字的問題,下面這篇文章主要給大家介紹了關(guān)于vue+element-ui中form輸入框無法輸入問題的解決方法,需要的朋友可以參考下
    2023-04-04
  • 新手簡單了解vue

    新手簡單了解vue

    Vue.js是一個(gè)構(gòu)建數(shù)據(jù)驅(qū)動的 web 界面的漸進(jìn)式框架。Vue.js 的目標(biāo)是通過盡可能簡單的 API 實(shí)現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件。下面我們來簡單了解下吧
    2019-05-05
  • vue全局注冊自定義指令防抖解析

    vue全局注冊自定義指令防抖解析

    這篇文章主要介紹了vue全局注冊自定義指令防抖解析,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 在Vue+Ts+Vite項(xiàng)目中配置別名指向不同的目錄并引用的案例詳解

    在Vue+Ts+Vite項(xiàng)目中配置別名指向不同的目錄并引用的案例詳解

    這篇文章主要介紹了在Vue+Ts+Vite項(xiàng)目中配置別名指向不同的目錄并引用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • vue.js給動態(tài)綁定的radio列表做批量編輯的方法

    vue.js給動態(tài)綁定的radio列表做批量編輯的方法

    下面小編就為大家分享一篇vue.js給動態(tài)綁定的radio列表做批量編輯的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • 解決vue使用vant輪播組件swipe + flex時(shí)文字抖動問題

    解決vue使用vant輪播組件swipe + flex時(shí)文字抖動問題

    這篇文章主要介紹了解決vue使用vant輪播組件swipe + flex時(shí)文字抖動問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-01-01
  • vue中使用v-if,v-else來設(shè)置css樣式的步驟

    vue中使用v-if,v-else來設(shè)置css樣式的步驟

    我們在使用vue項(xiàng)目開發(fā)時(shí),v-if是使用的非常多的,在這里我們談?wù)勅绾问褂胿-i來綁定修改css樣式,使用的主要是雙向數(shù)據(jù)綁定,即通過改變他的狀態(tài)來改變他的樣式,這篇文章主要介紹了vue中如何使用v-if,v-else來設(shè)置css樣式,需要的朋友可以參考下
    2023-03-03
  • Vue中的驗(yàn)證登錄狀態(tài)的實(shí)現(xiàn)方法

    Vue中的驗(yàn)證登錄狀態(tài)的實(shí)現(xiàn)方法

    這篇文章主要介紹了Vue中的驗(yàn)證登錄狀態(tài)的實(shí)現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • vue和react項(xiàng)目中key的作用示例詳解

    vue和react項(xiàng)目中key的作用示例詳解

    這篇文章主要為大家介紹了vue和react項(xiàng)目中key的作用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • el-tree文字顯示不全的解決辦法

    el-tree文字顯示不全的解決辦法

    本文主要介紹了el-tree文字顯示不全的解決辦法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論

阳春市| 方城县| 绍兴市| 金阳县| 山丹县| 文山县| 汝阳县| 马边| 盐亭县| 颍上县| 平和县| 永和县| 刚察县| 扶绥县| 郎溪县| 吴忠市| 盱眙县| 盐源县| 深州市| 濮阳县| 涿鹿县| 鹤壁市| 民丰县| 黄浦区| 雅安市| 托克逊县| 宁明县| 南皮县| 武山县| 宿松县| 湖南省| 肃南| 宁国市| 缙云县| 罗甸县| 临西县| 阳原县| 昔阳县| 调兵山市| 荣成市| 宜春市|