vue-router实现webApp切换页面动画效果代码


Posted in Javascript onMay 25, 2017

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript入门教程(10) 认识其他对象
Jan 31 Javascript
JavaScript prototype属性使用说明
May 13 Javascript
如何使用HTML5地理位置定位功能
Apr 27 Javascript
JavaScript获取URL汇总
Jun 08 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
Sep 02 Javascript
Node.js中使用socket创建私聊和公聊聊天室
Nov 19 Javascript
jQuery实现右键菜单、遮罩等效果代码
Sep 27 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
Apr 24 Javascript
javascript将url解析为json格式的两种方法
Aug 18 Javascript
基于BootStrap的文本编辑器组件Summernote
Oct 27 Javascript
详解Vue实战指南之依赖注入(provide/inject)
Nov 13 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
Sep 08 Javascript
Angular 2.x学习教程之结构指令详解
May 25 #Javascript
bootstrap动态添加面包屑(breadcrumb)及其响应事件的方法
May 25 #Javascript
js获取一组日期中最近连续的天数
May 25 #Javascript
AngularJs定时器$interval 和 $timeout详解
May 25 #Javascript
slideToggle+slideup实现手机端折叠菜单效果
May 25 #Javascript
Bootstrap实现的标签页内容切换显示效果示例
May 25 #Javascript
React-router中结合webpack实现按需加载实例
May 25 #Javascript
You might like
header跳转和include包含问题详解
2012/09/08 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
Document对象内容集合(比较全)
2010/09/06 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
JavaScript中的some()方法使用详解
2015/06/09 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
javascript获取网页各种高宽及位置的方法总结
2016/07/27 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
JavaScript中undefined和null的区别
2017/05/03 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
vue 返回上一页,页面样式错乱的解决
2019/11/14 Javascript
关于element-ui表单中限制输入纯数字的解决方式
2020/09/08 Javascript
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
python多重继承实例
2014/10/11 Python
使用Python编写类UNIX系统的命令行工具的教程
2015/04/15 Python
Python 专题四 文件基础知识
2017/03/20 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
2018/12/17 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
python3正则模块re的使用方法详解
2020/02/11 Python
python能否java成为主流语言吗
2020/06/22 Python
在Python中字典按值排序的实现方法
2020/11/12 Python
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
美国台面电器和厨具品牌:KitchenAid
2019/04/12 全球购物
RIP版本1跟版本2的区别
2013/12/30 面试题
文秘专业大学生求职信
2013/11/10 职场文书
辞职书格式样本
2015/02/26 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
求职自我推荐信
2015/03/24 职场文书
2015年大学学生会工作总结
2015/05/13 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书