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自定义功能函数实现动态添加网址参数修改网址参数值
Aug 02 Javascript
js 操作符汇总
Nov 08 Javascript
原生javascript实现自动更新的时间日期
Feb 12 Javascript
jQuery插件ajaxFileUpload异步上传文件
Oct 19 Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
Dec 31 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
Feb 20 Javascript
Vue之Vue.set动态新增对象属性方法
Feb 23 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
Jul 06 Javascript
微信小程序实现同一页面取值的方法分析
Apr 30 Javascript
node.js express框架简介与实现
Jul 23 Javascript
javascript随机变色实例代码
Oct 15 Javascript
JS 数组和对象的深拷贝操作示例
Jun 06 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学习笔记之php文件操作
2016/06/03 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
TBCompressor js代码压缩
2011/01/05 Javascript
jQuery boxy弹出层插件中文演示及使用讲解
2011/02/24 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
2012/09/16 Javascript
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
Array 重排序方法和操作方法的简单实例
2014/01/24 Javascript
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
Prototype框架详解
2015/11/25 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
详解JavaScript原型与原型链
2020/11/16 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
Python生成随机MAC地址
2015/03/10 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
2019/05/16 Python
pytorch 数据处理:定义自己的数据集合实例
2019/12/31 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
会计自我鉴定范文
2013/10/06 职场文书
生产车间主管岗位职责
2013/12/28 职场文书
施工资料员岗位职责
2014/01/06 职场文书
矫正人员思想汇报
2014/01/08 职场文书
领导接待方案
2014/03/13 职场文书
车辆转让协议书
2014/09/24 职场文书
2015届本科毕业生自我鉴定
2014/09/27 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
出生证明格式
2015/06/15 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
禁毒心得体会范文
2016/01/15 职场文书
小学生六年级作文之关于感恩
2019/08/16 职场文书