首页 web前端 js教程 vue router自动判断左右翻页转场动画效果的实现方法

vue router自动判断左右翻页转场动画效果的实现方法

Jan 25, 2018 am 11:47 AM
router 左右 翻页

前段时间做了一个移动端spa项目,技术基于 :vue + vue-router + vuex + mint-ui因为使用了vue-cli脚手架的webpack模版,所有页面都以.vue为后缀的文件作为一个组件,本文主要和大家分享vue router自动判断左右翻页转场动画效果,希望能帮助到大家。

最近公司项目比较少终于有空来记录一下自己对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) : &#39;&#39;;
    store.commit(&#39;SET_KEEPALLIST&#39;, keepLi);
   }
   //根据路径名深度设置转场动画类型
   store.commit(&#39;SET_TRANSNA&#39;, (to.path.split(&#39;/&#39;).length < from.path.split(&#39;/&#39;).length ? &#39;leftin&#39; : &#39;rightin&#39;));
   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,
     },
    }
   });
  }
 }
});
登录后复制

相关推荐:

jquery实现键盘左右翻页特效_jquery

vue router使用jquery和params传参详解

vue router路由参数刷新消失问题的解决方法

以上是vue router自动判断左右翻页转场动画效果的实现方法的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

耳机左右怎么分rl 耳机左右怎么戴 耳机左右怎么分rl 耳机左右怎么戴 Feb 22, 2024 pm 05:10 PM

L表示着left,戴在左耳朵上,R表示着right,戴在右耳上。解析1通常情况下耳机上边都是会有标识,英语字母的简称L和R,L表示着left,戴在左耳朵上,R表示着right,戴在右耳上。R、L标明的具体位置不固定,以具体耳机为标准。一部分耳机会把R标识为红色的。手机原装配送的耳机,通常情况下带话筒和按钮的一边为右。补充:耳机的种类1耳机是人的随身携带音响的象征。耳机可分为两种规范:OMTP规范一般被称为国家标准,CTIA一般称之为国际标准。耳机按照其换能方法分类,具体有:动圈方式、动铁方式、静

React Router使用指南:如何实现前端路由控制 React Router使用指南:如何实现前端路由控制 Sep 29, 2023 pm 05:45 PM

ReactRouter使用指南:如何实现前端路由控制随着单页应用的流行,前端路由成为了一个不可忽视的重要部分。ReactRouter作为React生态系统中最受欢迎的路由库,提供了丰富的功能和易用的API,使得前端路由的实现变得非常简单和灵活。本文将介绍ReactRouter的使用方法,并提供一些具体的代码示例。安装ReactRouter首先,我们需

功耗测试及评估(rx588功耗测试与评估) 功耗测试及评估(rx588功耗测试与评估) Dec 31, 2023 pm 09:38 PM

rx588功耗250W左右。rx580看电影耗电,但是耗电并不多。很多视频都需要硬件进行解码。多多少少都会用得到显卡。xfx深红和迪兰恶魔单卡+7700K的平台功耗在380w左右,7700k算100w,其他设备加一起最多30w,也就是rx588的功耗在250w左右,双卡整机功耗就是630w到650w,700w以上的才够,但这个时候电源的负荷太高,影响寿命,按照6成-8成的负荷计算,理想的电源额定功率在850到1000w,具体还要看用什么cpu和超不超频。h61主板支持588显卡吗H61主板本身是

word翻页要怎么做呢 word翻页要怎么做呢 Mar 19, 2024 pm 07:22 PM

word是常用的办公软件之一,在其编辑文本内容较长较多不好查阅时,可以进行word翻页。下面小编就跟小伙伴们一起分享下word翻页的简单方法教程吧!希望对各位小伙伴们有所帮助!1.首先,我们在电脑上将多页的word文稿,在word软件进行打开。如下方图片内容所示:2.点击word界面的滚动条的向上的箭头,进行向上滚动翻页。如下方图片内容所示:3.如果需要向下翻页,点击滚动条的向下的箭头。如下方图片内容所示:4.点击滚动条的箭头翻页,这种翻页比较随意。我们需要快速翻页,使用鼠标右键点击滚动条。如下

如何使用 JavaScript 实现无限滚动翻页功能? 如何使用 JavaScript 实现无限滚动翻页功能? Oct 19, 2023 am 09:57 AM

如何使用JavaScript实现无限滚动翻页功能?在现代网站的设计中,无限滚动翻页已经变得非常流行。这种功能能够帮助用户无需点击翻页按钮,而是通过不断滚动页面来加载新的内容。在这篇文章中,我们将介绍如何使用JavaScript来实现无限滚动翻页功能,并提供具体的代码示例。要实现无限滚动翻页功能,我们需要监听用户滚动事件,并在页面滚动到特定位置时加载新的内

Vue Router Lazy-Loading路由的独特优势,如何优化页面性能? Vue Router Lazy-Loading路由的独特优势,如何优化页面性能? Sep 15, 2023 am 10:36 AM

VueRouter是Vue.js官方提供的路由管理插件,它可以帮助我们在Vue应用程序中实现页面导航和路由切换。其中的Lazy-Loading特性是VueRouter的一个独特优势,它可以极大地优化页面性能。在本文中,我们将介绍VueRouter的Lazy-Loading路由特性,并提供一些优化页面性能的实际代码示例。Lazy-Loading是指在需要

react router 不显示怎么办 react router 不显示怎么办 Dec 30, 2022 am 09:30 AM

react router不显示的解决办法:1、在父路由组件中加入browserRouter把router都包起来;2、使用“this.props.history.go()”进行组件刷新;3、在browserrouter参数里加上“forcerefresh={true}”;4、在“”里面写钩子函数,并在离开或进入此路由时调用即可。

Vue Router Lazy-Loading路由:助力页面性能提升的趋势 Vue Router Lazy-Loading路由:助力页面性能提升的趋势 Sep 15, 2023 am 08:03 AM

VueRouter是Vue.js框架中的官方路由管理器。它允许开发者通过路由映射来切换页面内容,使得单页应用程序更加可控和易于维护。但是,在应用程序变得越来越复杂的情况下,路由的加载和解析可能会成为性能瓶颈。为了解决这个问题,VueRouter提供了一种懒加载路由的功能,即将路由的加载推迟到实际需要时。Lazy-loading(懒加载)是一种加载技术,它

See all articles