麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 15:12:08
字體:
供稿:網(wǎng)友

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

因為使用了vue-cli腳手架的webpack模版,所有頁面都以.vue為后綴的文件作為一個組件

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

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

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

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

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

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

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

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

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

  那么在跳轉(zhuǎn)頁面之前,只需要比較當前頁面和將要跳轉(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:

//進入路由之前設(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)場動畫效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對武林網(wǎng)網(wǎng)站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 成人mm视频在线观看 | 亚洲国产精品一 | 一及毛片视频 | 天堂成人国产精品一区 | 久久久线视频 | 九九热在线视频观看这里只有精品 | 在线视频1区 | 欧美xxxx精品另类 | xxxx69hd一hd | 神马视频我不卡 | 91久久91久久精品免观看 | 久久国产精品电影 | 久久久中| 久草热久草视频 | 看免费的毛片 | 毛片免费视频在线观看 | 欧美日韩视频第一页 | 黄色香蕉视频 | 亚洲3atv精品一区二区三区 | 一区二区三区视频在线播放 | 中国fx性欧美xxxx | 久久蜜桃香蕉精品一区二区三区 | 国产亚洲精品久久午夜玫瑰园 | 激情久久免费视频 | 欧美a在线观看 | 国产精品观看在线亚洲人成网 | 在线观看网址av | 国产91丝袜在线熟 | 天天躁狠狠躁夜躁2020挡不住 | 成人一级片毛片 | 黄色网址入口 | 欧美亚洲国产成人综合在线 | 亚洲成年人免费网站 | 国产成人精品一区在线播放 | 国产午夜亚洲精品午夜鲁丝片 | 国产日韩线路一线路二 | 久久小视频 | 黄色网址免费进入 | 欧美成在线视频 | www.17c亚洲蜜桃 | 国产成人精品午夜视频' |