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 相关文章推荐
图片上传即时显示缩略图的js代码
May 27 Javascript
JavaScript 数组运用实现代码
Apr 13 Javascript
说说JSON和JSONP 也许你会豁然开朗
Sep 02 Javascript
caller和callee的区别介绍及演示结果
Mar 10 Javascript
js中把JSON字符串转换成JSON对象最好的方法
Mar 21 Javascript
JQuery 在线引用及测试引用是否成功
Jun 24 Javascript
JS中数组重排序方法
Nov 11 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
Jun 04 Javascript
node跨域转发 express+http-proxy-middleware的使用
May 31 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
Aug 08 Javascript
Ant Design的Table组件去除
Oct 24 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
Dec 24 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
PHP实现图片简单上传
2006/10/09 PHP
PHP 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
PHP中redis的用法深入解析
2014/02/20 PHP
PHP获取音频文件的相关信息
2015/06/22 PHP
PHP添加图片水印、压缩、剪切的封装类
2015/08/17 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
2010/12/30 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
2016/06/21 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
AngularJS中$watch和$timeout的使用示例
2016/09/20 Javascript
微信公众号-获取用户信息(网页授权获取)实现步骤
2016/10/21 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
2018/09/14 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
Pytorch之finetune使用详解
2020/01/18 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
Pytorch高阶OP操作where,gather原理
2020/04/30 Python
Python接口自动化测试的实现
2020/08/28 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
实习生自荐信范文
2013/11/13 职场文书
人事经理岗位职责范本
2014/08/04 职场文书
师德师风个人总结
2015/02/06 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电