最近再写页面的时候,感觉页面之间的切换有点生硬,所以查了一下文档看见了transition这个组建,很实用,故此在这里跟大家分享一下

---------------------------------------------------------

---------------------------------------------------------

---------------------------------------------------------

1、解决这个问题的难点就是如何来确定路由是前进还是后退的问题,下面是解决的方案

a) 我们需要给各个页面定义层级,在切换路由时判断用户是进入哪一层页面,如果用户进入更高层级那么做前进动画,如果用户退到低层级那么做后退动画.

router/index.js

  1 import VueRouter from 'vue-router'
2 import Home from '../components/home/home'
3 import User from '../components/user/user'
4 var router = new VueRouter({
5 routes:[{
6 name:'test',
7 path:'/',
8 meta:{index:0}, // meta对象的index用来定义当前路由的层级,由小到大,由低到高
9 component:{template:'<div>test</div>' }},
10 {
11 name:'home',
12 path:'/home',
13 meta:{index:1},
14 component:Home
15 },
16 {
17 name:'user',
18 path:'/user/:id',
19 meta:{index:2},
20 component:User
21 }]
22 }
23 });
24

监控路由跳转,判断切换页面之间的层级关系,并以此来判断路由前进或者后退.

  1 <template>
2 <div id="app">
3 <transition :name="transitionName">
4 <router-view></router-view>
5 </transition>
6 </div>
7 </template>
8 <script>
9 export default {
10 name: 'App',
11 data () {
12 return {
13 transitionName:''
14 }
15 },
16 watch: {
17 // 使用watch 监听$router的变化
18 $route (to, from) {
19 // 如果to索引大于from索引,判断为前进状态,反之则为后退状态
20 if (to.meta.index > from.meta.index){
21 // 设置动画名称
22 this.transitionName = 'slide-left';
23 } else{
24 this.transitionName = 'slide-right';
25 }
26 }
27 }
28 }
29 </script>
30

编写slide-left 和 slide-right 类的动画

  1 .slide-right-enter-active,
2 .slide-right-leave-active,
3 .slide-left-enter-active,
4 .slide-left-leave-active {
5 will-change: transform;
6 transition: all 500ms;
7 position: absolute;
8 }.slide-right-enter {
9 opacity: 0;
10 transform: translate3d(-100%, 0, 0);
11 }.slide-right-leave-active {
12 opacity: 0;
13 transform: translate3d(100%, 0, 0);
14 }.slide-left-enter {
15 opacity: 0;
16 transform: translate3d(100%, 0, 0);
17 }.slide-left-leave-active {
18 opacity: 0;
19 transform: translate3d(-100%, 0, 0);
20 }

VUE如何实现切换页面时的过渡动画?的更多相关文章

  1. 解决Vue 使用vue-router切换页面时 页面显示没有在顶部的问题

    有时候我们需要页面滚动条滚动到某一固定的位置,一般使用Window scrollTo() 方法. 语法就是:scrollTo(xpos,ypos) xpos:必需.要在窗口文档显示区左上角显示的文档的 ...

  2. Vue切换页面时中断axios请求

    一.概述 在Vue单页面开发过程中,遇到这样的情况,当我切换页面时,由于上一页面请求执行时间长,切换到该页面时,还未执行完,这时那个请求仍会继续执行直到请求结束,此时将会影响页面性能,并且可能对现在页 ...

  3. Flutter实现TabBarView切换页面时每个页面只initState一次

    在  TabBarView  组件中切换页面时,子页面每次均会重新  initState  一次,导致每次都切换页面均会重绘,如下图 如果需要只在第一次进页面  initState  一次,后面再进入 ...

  4. JQuery Mobile - 解决切换页面时,闪屏,白屏等问题

    在点击链接,切换页面时候,总是闪屏,感觉很别扭,看起来不舒服,怎么解决这个问题?方法很简单,就是在每个页面的meta标签内定义user-scalable的属性为 no! <meta name=& ...

  5. Vue Spa切换页面时更改标题

    在Vue组件化开发过程中,因为是单页面开发,但是有时候需要页面的title根据情况改变,于是上网查了一下,各种说法花(wo)里(kan)胡(bu)哨(dong), 于是想到一个黑科技 documet. ...

  6. vue 获取页面详情后 切换页面时 如何监听用户是否修改过信息

    可以用 beforeRouteLeave 和 updated 来判断.export default { name: 'supplier', components:{cmtWrap,cmtContent ...

  7. 每天一点点之vue框架开发 - vue中使用vue-router切换页面时自动滚动到顶部的方法

    1. 在main.js入口文件中写入 //路由跳转后,页面回到顶部 router.afterEach(() => { document.body.scrollTop = 0; document. ...

  8. vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法

    原文:http://www.jb51.net/article/129270.htm main.js入口文件配合vue-router写这个 router.afterEach((to,from,next) ...

  9. VUE 实现tab切换页面效果

    一 163邮箱登录tab切换 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

随机推荐

  1. dmidecode的Python解析

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ 解析dmidecode命令输出结果,返回JSON格式数据 测试服务器D ...

  2. Python自省

    自省就是通过一定机制查询到对象的内部结构,也就是运行时获取对象内部的属性以及类型,在Python中dir(),type(), hasattr(), isinstance()都是很好的自省例子 #!/u ...

  3. [翻译]Mock 在 Python 中的使用介绍

    目录 Mock 在 Python 中的使用介绍 原文链接与说明 恐惧系统调用 一个简单的删除函数 使用 Mock 重构 潜在陷阱 向 'rm' 中加入验证 将文件删除作为服务 方法 1:模拟实例的方法 ...

  4. 1.5准备CentOS和Nginx环境「深入浅出ASP.NET Core系列」

    准备CentOS 1.1虚拟机 CentOS的安装这里使用vmware workstation 14来做虚拟机,当然你也可以用Oracle的虚拟机或者不用虚拟机,使用云服务或者使用双系统,不是什么大问 ...

  5. 自定义GridControl编辑器

    本文版权归博主 惊梦无痕 所有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作.SourceLink 鉴于网上的针对GridControl的一些代码比较凌乱,且功能分散,故将整理过的代码分享出来 ...

  6. 痞子衡嵌入式:ARM Cortex-M内核MCU开发那些事 - 索引

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是ARM Cortex-M内核微控制器相关知识. ARM公司从2004年开始推出Cortex-M系列内核,迄今Cortex-M家族已经包 ...

  7. Docker部署Zabbix监控MariaDB主从同步(Percona Monitoring Plugins for Zabbix)

    一.安装Docker并部署Zabbix 建议先配置清华大学的docker-ce yum源,速度有保障:清华大学repo源 1.Zabbix Server节点配置 部署环境: [root@server0 ...

  8. 【技术解析】如何用Docker实现SequoiaDB集群的快速部署

    1. 背景 以Docker和Rocket为代表的容器技术现在正变得越来越流行,它改变着公司和用户创建.发布.运行分布式应用的方式,在未来5年将给云计算行业带来它应有的价值.它的诱人之处在于: 1)资源 ...

  9. 39.QT-Qtxlsx库使用

    之前参考博客https://blog.csdn.net/c3060911030/article/details/51560239下载Qtxlsx库,然后编译的时候,显示: error: invalid ...

  10. Editplus的扩展程序的删除

    好久没用Editplus,然后准备删除,结果发现有进程正在运行,删除不掉 ,于是,用软件管家删除 用软件管家删除结束之后,有残留文件,就是Editplus的扩展程序        1.于是找到Edit ...