vue-router实现webApp切换页面动画效果代码
时间:2019-03-30
本文章向大家介绍vue-router实现webApp切换页面动画效果代码,主要包括vue-router实现webApp切换页面动画效果代码使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
vue-router实现webApp切换效果
演示效果
快速集成
1.复制PageTransittion.vue到项目目录。2.修改router配置。
Router.prototype.goBack = function () { this.isBack = true window.history.go(-1) } const router = new Router({ routes: [ { path: '/', name: 'PageTransition', component: PageTransition, // 引入页面切换组件 children: [{ path: '', component: Index // 父路由访问页面,例如,访问www.aaa.com/ 显示的是Index组件 }, { path: '/pageA', component: PageA // 子路由组件 例如,访问www.aaa.com/pageA 显示为PageA }, { path: '/pageB', component: PageB // 子路由组件 例如,访问www.aaa.com/pageB 显示为PageB }] } ] })
方案实现
记录页面状态
要实现页面前进后台动画,首先必须知道页面状态(即是页面是进入下一页,还是后退),我们可以通过改写router.Go方法记录回退状态,页面如果需要回退时,调用
$router.go(-1)
修改router/index.vue
// 增强原方法,好处是旧的业务模块不需要任何变动 Router.prototype.go = function () { this.isBack = true window.history.go(-1) } // 或者你可以新建一个方法 Router.prototype.goBack = function () { this.isBack = true this.go(-1) }
当new Router时,实例就包含go/goBack方法。
监听路由变化
使用嵌套路由的方式引入子页面,监听根路由的update钩子做相应操作。
beforeRouteUpdate (to, from, next) { // 如果isBack为true时,证明是用户点击了回退,执行slide-right动画 let isBack = this.$router.isBack if (isBack) { this.transitionName = 'slide-right' } else { this.transitionName = 'slide-left' } // 做完回退动画后,要设置成前进动画,否则下次打开页面动画将还是回退 this.$router.isBack = false next() }
动画效果
通过transition执行动画
<transition :name="transitionName"> <router-view class="child-view"></router-view> </transition>
css代码
.child-view { position: absolute; width:100%; transition: all .8s cubic-bezier(.55,0,.1,1); } .slide-left-enter, .slide-right-leave-active { opacity: 0; -webkit-transform: translate(50px, 0); transform: translate(50px, 0); } .slide-left-leave-active, .slide-right-enter { opacity: 0; -webkit-transform: translate(-50px, 0); transform: translate(-50px, 0); }
路由设置
router/index.js
const router = new Router({ routes: [ { path: '/', name: 'PageTransition', component: PageTransition, children: [{ // 该路由为父路由的默认路由 path: '', component: Index }, { path: '/pageA', component: PageA }, { path: '/pageB', component: PageB }] } ] })
github地址:https://github.com/zhengguorong/pageAinimate
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- Spring 框架之 AOP 原理剖析
- Java 平台反应式编程(Reactive Programming)入门
- 从原理到实例,他用区块链技术做一了个COIN 客户端
- 解锁Spring Data Redis的正确使用姿势
- 互联网厂工必知必会:SQL基础篇
- 算法入门,其实可以像读小说一样有趣
- 互联网中小型企业的持续集成CICD
- Hybris平台Web架构模式演变:前后端分离
- 资源控制在大数据和云计算平台中的应用
- SharifCTF 2018 Crypto writeup
- 如何使用ABSL代码调用Web service
- 会说话的ABAP report
- 解构赋值,你不能不懂!
- Go-指针、传值与传引用、垃圾回收
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python 基础(二十一):argparse 模块
- LeetCode 4 题解
- 操作系统与 CPU 是怎么执行线程的?
- LeetCode 5 题解
- 详细齐全!Docker常用基本命令
- angular浏览器兼容性问题解决方案
- Python 基础(二十二):正则表达式
- Python 进阶(一):多线程
- Python 进阶(二):多进程
- MySQL information_schema详解 EVENTS
- Python 进阶(三):邮件的发送与收取
- MySQL information_schema详解 FILES
- MySQL information_schema详解 GLOBAL_STATUS和SESSION_STATUS
- Python 进阶(四):数据库操作之 MySQL
- Python 进阶(五):数据库操作之 SQLite