前段时间做了一个移动端spa项目,技术基于 :vue + vue-router + vuex + mint-ui

因为使用了vue-cli脚手架的webpack模版,所有页面都以.vue为后缀的文件作为一个组件

最近公司项目比较少终于有空来记录一下自己对vue-router的一些小小的使用心得,

  一般的移动端口单页应用在跳转页面时候会有相应的转场动画,比如:

  1. 从当前一级页面跳转二级页面需要展示的转场动画是一级页面向屏幕左边移动消失的同时,

   二级页面从屏幕的右边向左边移动出现。(类似翻书翻到下一页的效果)

  2. 从当前二级页面跳回一级页面需要展示的转场动画是二级页面向屏幕右边移动消失的同时,

   一级页面从屏幕的左边向右边移动出现。类似(翻书翻回到上一页的效果)

  但是出现了一个问题:如何判断当前页面和将要跳转页面之间的层级关系呢?

我的解决办法是:创建页面 (组件)时,在定义页面的router里通过设置页面的path(访问路径 )属性来区分组件之间的层级关系。

比如一个一级页面 (组件) ‘A’ 的访问路径为 ‘/A’ 。他的二级页面 ‘B’ 的访问路径为 ‘/A/B’ .

  那么在跳转页面之前,只需要比较当前页面和将要跳转到的页面的路径深度就可以动态设置转场动画了。

比如 ‘/A/B’的深度 >  ‘/A’ 的深度那么 从B页面跳转到A页面就应该是 效果2:(翻书翻回到上一页的效果).

一 。首先父页面

home.vue:

<!-- keepAlList是用来动态判断组件是否需要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片段(用来在跳转页面之前动态设置转场动画)

  main.js:

//进入路由之前设置拦截器
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 == '') {//未登录的状态通行
      next();return;} else {if (["login", "register", "forget"].indexOf(to.name) >= 0) {//已登录的状态去首页
        next({name: 'home'});return;} else {//已登录的状态去首页
        next();return;}}} else {//去登录页面以外的页面(以下是本文关键代码)if (user && user != '') {//判断是否为需要缓存组件,如果是添加组件名到数组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);}//根据路径名深度设置转场动画类型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,},}});}}
});

转载于:https://www.cnblogs.com/zhuxiaoweb/p/7644321.html

vue-router自动判断左右翻页转场动画相关推荐

  1. 如何使用C#调用淘宝网页自动搜索,翻页和点击商品

    这一篇将说明如何使用C#和WPF浏览器控件来完成淘宝自动搜索,翻页,自动点击的操作 首先说明下,我在实现过程中使用的控件,一个是浏览器WebBrowser,一个是按钮Button,还有单选按钮Radi ...

  2. 会声会影制作视频翻页转场教程

    2019独角兽企业重金招聘Python工程师标准>>> 如何制作视频翻页转场?"翻页"转场是素材A以翻页的形式从一角卷起,逐渐将素材B显示.使用会声会影可以轻松制 ...

  3. Vue 左右翻页,点赞动画

    因做小活动比较多,使用了一些动画,做些笔记,供大家参考 翻页动画 router -> index.js import Vue from 'vue'; import Router from 'vu ...

  4. animate.css在vue中进行路由切换时的转场动画

    在做一些后台管理或者是一些跳转型的网站的时候我们会遇到用动画去切换,显得网站动态化效果强一点,毕竟vue框架属于单页面应用,有些时候一些动画会显得页面的逼格更高一点 在选择动画的时候我们绝大多数都会考 ...

  5. vue列表左右箭头滑动 vue+typescript实现左右箭头翻页,类似轮播图效果

    今天的内容是在工作终于到的问题,先上图吧: 这个是iview-design官网的tabs切换里面的内容,红色圈住的部分就是今天的内容,左右箭头可以切换,内容可以自定义. html代码: <div ...

  6. HTML CSS实现翻页效果(动画)

    有详情注释说明 <html> <style>* {padding: 0;margin: 0;}body,html {height: 100%;}body {/*perspect ...

  7. vue实现上下滑动翻页_vue 实现滚动到底部翻页效果(pc端)

    pc端vue 滚动到底部翻页 效果,具体内容如下所示: html: [{{item.code||item.name}}] {{item.name}} js: 先写滚动事件 handleScroll() ...

  8. php天猫列表数据抓取,如何翻页抓取网页数据——以采集天猫搜索列表为例

    我们在抓取数据时,通常不会只抓取网页当前页面的数据,往往都会继续抓取翻页后的数据.本文就为大家介绍,集搜客GooSeeker网络爬虫如何在进行数据抓取时,自动抓取翻页后的数据. 在MS谋数台的爬虫路线 ...

  9. Java电子书平滑翻页效果_移动端页面平滑翻页的解决方案

    随着近几年移动营销页的火爆,催生了一个中国式的名词「H5」.而 H5 最常见的形态就是类似幻灯片翻页效果. 我们需要制作 H5 的时候,最快的办法就是使用一些滑动插件库,如 iDangero.us 出 ...

  10. 打造丝般顺滑的 H5 翻页库

    (点击上方公众号,可快速关注) 来源:zhangbobell fex.baidu.com/blog/2017/10/build-a-silky-smooth-slide-library/ 如果好文章投 ...

最新文章

  1. 【每日一念经】算法岗面经,一万字面试经验你确定不看?
  2. unity3d 随机生成地形之随机山脉
  3. [BRF+] 测试ruleset
  4. RUNNOOB python练习题 28 递归 数列
  5. 减治法在生成全排列中的应用(JAVA)--回溯、Johnson-Trotter算法、自字典序
  6. yield表达式形式的应用
  7. html显示mysql图片路径_MySQL MySQL 直接存储图片并在 html 页面中展示,点击下载 _好机友...
  8. mysqlgbk不支持中文吗_【转载】mysql 不支持中文解决办法
  9. 杭电计算机14年笔试真题
  10. python爬虫知乎问答
  11. inno setup安装之前关闭mysql_inno setup 安装前判断进程是否存在,以及停止相应进程转...
  12. 使用Dism++和Dism为优启通08PE添加驱动
  13. java整数int的32位输出
  14. matlab里uicontrol的用法,Matlab uicontrol举例
  15. 简析通达信股票接口测试过程
  16. origin绘制双Y轴柱状图
  17. 有多少旅游企业入驻了抖音平台?有多少抖音用户喜欢看旅游视频?
  18. 基于深度卷积神经网络的图像超分辨率重建(SRCNN) 学习笔记
  19. windows截图保存自动化脚本以及设置快捷键一键运行
  20. Web3中文|连年亏损下,web3能拯救B站吗?

热门文章

  1. perl判断变量是数值_Perl学习12之defined undef使用
  2. 网页开发者模式调整到手机模式_突破极限?ROG 游戏手机 3 内藏 160Hz 刷新率模式...
  3. C# RabbitMQ(一)介绍
  4. PHP 使用 ZipArchive 将文件打包成 zip
  5. c语言贪吃蛇游戏的关键技术,C语言的贪吃蛇游戏设计
  6. java queue的实例化_如何在java中实例化Queue对象?
  7. php和html怎么链接,PHP(6)只记录我的学习历程 html(链接和框架标志)
  8. 一年多开源没进展,我也放弃了
  9. JAVA CLASS混淆工具:Allatori 简单试用
  10. 开发人员测试,也必须有测试报告