VUE如何实现切换页面时的过渡动画?
最近再写页面的时候,感觉页面之间的切换有点生硬,所以查了一下文档看见了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如何实现切换页面时的过渡动画?的更多相关文章
- 解决Vue 使用vue-router切换页面时 页面显示没有在顶部的问题
有时候我们需要页面滚动条滚动到某一固定的位置,一般使用Window scrollTo() 方法. 语法就是:scrollTo(xpos,ypos) xpos:必需.要在窗口文档显示区左上角显示的文档的 ...
- Vue切换页面时中断axios请求
一.概述 在Vue单页面开发过程中,遇到这样的情况,当我切换页面时,由于上一页面请求执行时间长,切换到该页面时,还未执行完,这时那个请求仍会继续执行直到请求结束,此时将会影响页面性能,并且可能对现在页 ...
- Flutter实现TabBarView切换页面时每个页面只initState一次
在 TabBarView 组件中切换页面时,子页面每次均会重新 initState 一次,导致每次都切换页面均会重绘,如下图 如果需要只在第一次进页面 initState 一次,后面再进入 ...
- JQuery Mobile - 解决切换页面时,闪屏,白屏等问题
在点击链接,切换页面时候,总是闪屏,感觉很别扭,看起来不舒服,怎么解决这个问题?方法很简单,就是在每个页面的meta标签内定义user-scalable的属性为 no! <meta name=& ...
- Vue Spa切换页面时更改标题
在Vue组件化开发过程中,因为是单页面开发,但是有时候需要页面的title根据情况改变,于是上网查了一下,各种说法花(wo)里(kan)胡(bu)哨(dong), 于是想到一个黑科技 documet. ...
- vue 获取页面详情后 切换页面时 如何监听用户是否修改过信息
可以用 beforeRouteLeave 和 updated 来判断.export default { name: 'supplier', components:{cmtWrap,cmtContent ...
- 每天一点点之vue框架开发 - vue中使用vue-router切换页面时自动滚动到顶部的方法
1. 在main.js入口文件中写入 //路由跳转后,页面回到顶部 router.afterEach(() => { document.body.scrollTop = 0; document. ...
- vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
原文:http://www.jb51.net/article/129270.htm main.js入口文件配合vue-router写这个 router.afterEach((to,from,next) ...
- VUE 实现tab切换页面效果
一 163邮箱登录tab切换 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
随机推荐
- Netty源码 服务端的启动
最近一直在看netty,看完之后就想做点笔记.可是实在是太忙了,挤了还要几个晚上终于挤出来了 上图是服务端的实例代码.大致的流程先梳理一遍. 首先会执行 用于创建两个线程组,boosGroup用于接受 ...
- 《k8s-1.13版本源码分析》上github
要干嘛? 猪年新气象,今年开始,kubernetes源码分析系列文章主战场从微信公众号转至github,完全使用Markdown重写,使用gitbook生成web页面,支持在线阅读,导出pdf等各种玩 ...
- JavaScript 中最重要的保留字
JavaScript 保留了一些关键字,这些关键字在当前的语言版本中并没有使用,但在以后 JavaScript 扩展中会用到. abstract else instanceof super boole ...
- fab 菜单实现之前传-钟表表盘
个人很喜欢谷歌的material design,很喜欢但是没有动手弄过,今天想动手操作一下Floating Action Button菜单,网上有很多种:圆形.扇形.射线.直线等.我想在一个例子中用到 ...
- 日志分析工具Log Parser介绍
摘要: 微软动态CRM专家罗勇 ,回复321或者20190322可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 分析Dynamics 365 Customer Enga ...
- java笔记----property文件读写
package com.test.property; import java.io.BufferedInputStream; import java.io.File; import java.io.F ...
- ubuntu如何安装chromium浏览器并设置成中文版
在Ubuntu上使用APT安装Chromium有3种方法: 1.在Ubuntu软件中心输入chromium,然后在结果中选择安装即可. 2.在新立得软件包管理器中输入chromium,然后标记安装即可 ...
- Java基础系列--07_Object类的学习及源码分析
Object: 超类 (1)Object是类层次结构的顶层类,是所有类的根类,超类. 所有的类都直接或者间接的继承自Object类. 所有对象(包括数组)都实现这个类的方法 (2)Object ...
- matlab导入txt数据画图
因为最近需要观察txt保存的一堆数据,则需要使用这些数据画图.强大的matlab分分钟解决了. 实例数据:data.txt 步骤: ①打开matlab -> HOME(主页) -> Imp ...
- 进行Spark,Kafka针对Kerberos相关配置
1. 提交任务的命令 spark-submit \--class <classname> \--master yarn \--deploy-mode client \--executor- ...