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 相关文章推荐
JQuery this 和 $(this) 的区别
Aug 23 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
Feb 03 Javascript
IE的事件传递-event.cancelBubble示例介绍
Jan 12 Javascript
JavaScript实现网页截图功能
Oct 16 Javascript
使用JQuery 加载页面时调用JS的实现方法
May 30 Javascript
JS中BOM相关知识点总结(必看篇)
Nov 22 Javascript
js实现短信发送倒计时功能(正则验证)
Feb 10 Javascript
原生JS实现的碰撞检测功能示例
May 18 Javascript
Vue动态加载异步组件的方法
Nov 21 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
Feb 26 Javascript
微信小程序可滑动月日历组件使用详解
Oct 21 Javascript
Vue使用Three.js加载glTF模型的方法详解
Jun 14 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数据流应用的简单例子
2012/06/01 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
用javascript实现自定义标签
2007/05/08 Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
一个php+js实时显示时间问题
2015/10/12 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
D3.js中强制异步文件读取同步的几种方法
2017/02/06 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
基于axios封装fetch方法及调用实例
2018/02/05 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
vue的全局变量和全局拦截请求器的示例代码
2018/09/13 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
Python函数中的函数(闭包)用法实例
2016/03/15 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
python 正确保留多位小数的实例
2018/07/16 Python
Python实现的爬取百度贴吧图片功能完整示例
2019/05/10 Python
python tkinter控件布局项目实例
2019/11/04 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
NFL墨西哥官方商店:Tienda NFL
2017/11/28 全球购物
瑜伽国际:Yoga International
2018/04/18 全球购物
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
感谢信的格式
2015/01/21 职场文书
单独二胎证明
2015/06/24 职场文书