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= ...
随机推荐
- 警惕挂着开源的招牌到处坑蒙拐骗的垃圾项目,比如iBase4J
开源界,本是技术爱好者百花齐放.各显其能的地方.但是,不管什么好东西,到了这块奇葩的土地都能变了味.现在的开源界,真的是鱼龙混杂,有些开源软件,不知道是噱头喊得高,还是star刷得好,竟能凭借一身垃圾 ...
- 遇到一道经典的java面试题
在文件 nameList.txt 中按下图格式存放着超过50万人的姓名与身份证信息.请使用您熟悉的编程语言(Java或C/C++)编写一段程序, 将出生日期落在1995年1月1日与1999年12月31 ...
- Asp.Net Core 轻松学-实现跨平台的自定义Json数据包
前言 在前后端分离的业务开发中,我们总是需要返回各种各样的数据包格式,一个良好的 json 格式数据包是我们一贯奉行的原则,下面就利用 Json.Net 来做一个简单具有跨平台的序列化数据包实 ...
- java锁与监视器概念 为什么wait、notify、notifyAll定义在Object中 多线程中篇(九)
在Java中,与线程通信相关的几个方法,是定义在Object中的,大家都知道Object是Java中所有类的超类 在Java中,所有的类都是Object,借助于一个统一的形式Object,显然在有些处 ...
- .NetCore WebAPI采坑之路(持续更新)
1.WebAPI新增日志过滤器or中间件后Action读取到的请求Body为空问题 案例: 自定义了一个中间件,用于记录每次访问webapi的入参,以及引用了Swagger. 先看下面这段代码: pu ...
- DS控件库 DS标签的另类用法之折叠展开
某些场合下,可以通过动态设置DS标签的文本内容来输出不同的显示效果,以下是示例. 示例中的素材 示例资源文本 String1="<linkimg=E1><b>&l ...
- ASP.NET应用程序服务器集群方案
本文采用Nginx来实现ASP.NET程序集群化. 准备环境 首先准备Nginx环境,Windows版本下载链接:http://nginx.org/en/download.html 解压后文件格式如下 ...
- java爬虫系列第五讲-如何使用代理防止爬虫被屏蔽?
本文内容 1.分析一下爬虫存在的问题及解决方案 2.webmagic中代理的使用 3.目前市面上一些比较好用的代理服务器 存在的问题 我们在使用爬虫过程中,大多都会遇到这样的问题:突然某一天爬虫爬不到 ...
- 智能指针std::weak_ptr
std::weak_ptr 避免shared_ptr内存泄漏的利器.
- shiro经典通俗易懂javase例子
package com.cun; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.*; import org. ...