最近再写页面的时候,感觉页面之间的切换有点生硬,所以查了一下文档看见了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. [逆向工程] 二进制拆弹Binary Bombs 快乐拆弹 详解

    二进制拆弹 binary bombs 教你最快速解题,成功拆弹 最近计算机基础课,的实验lab2,二进制拆弹,可以说是拆的我很快乐了(sub n, %hair) 此处头发减n 我刚开始做的时候很是懵逼 ...

  2. Docker进阶之四:centos7安装docker

    centos7.6 安装docker 参考:https://docs.docker.com/install/linux/docker-ce/centos/ 一.存在老版本先删除 yum remove ...

  3. HTML学习总结&基础篇

    何为坚持?一个“勤”,一个“忍”. 年前给自己定的目标,今年一定要坚持多逛园子,多看一些大佬的帖子,然后自己也尽量能够分享自己学习的收获,让自己进步快些,但是多逛园子是做到了,写博客这个东西,今年好像 ...

  4. Java中nextLine()与其他next(),nextInt(),nextFloat()的区别

    最近学习Java过程中遇到一个小问题,就是用nextInt()来接收输入内容时,按完回车之后会产生后面的内容无法输入的结果,因此来做个小记录.有不足的地方还请大家指出. 区别一  读取返回结果 nex ...

  5. Flask实战第3天:url_for使用

    我们之前是通过url来找到对应的视图函数 /     =>    hello_world 那么url_for则是通过视图函数找到url hello world  =>  / 演示如下 #c ...

  6. Odoo 中使用 celery 实现高性能异步任务队列

    详见:http://www.oejia.net/blog/2018/07/09/odoo_task_queue.html 概述 在 odoo 中可以用自带的cron实现异步任务,这个cron基于多线程 ...

  7. arcgis api 3.x for js 实现克里金插值渲染图不依赖 GP 服务(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  8. Webpack4教程 - 第三部分,如何使用插件

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://wanago.io/2018/07/23/webpack-4-course-part ...

  9. Android Studio工程项目打包成SDK(jar或aar格式)

    Android工程项目打包成SDK 在app的gradle下进行设置: (1)将apply plugin: ‘com.android.application’ 改为apply plugin: ‘com ...

  10. SQL Server数据库文件与文件组总结

    文件和文件组概念 关于文件与文件组,简单概括如下,详情请参考官方文档"数据库文件和文件组Database Files and Filegroups"或更多相关资料: 数据文件概念: ...