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 相关文章推荐
alert中断settimeout计时功能
Jul 26 Javascript
Angular用来控制元素的展示与否的原生指令介绍
Jan 07 Javascript
jQuery简单实现日历的方法
May 04 Javascript
jQuery图片轮播滚动切换代码分享
Apr 20 Javascript
详解JavaScript的另类写法
Apr 11 Javascript
js removeChild 方法深入理解
Aug 16 Javascript
js编写的treeview使用方法
Nov 11 Javascript
JavaScript中transform实现数字翻页效果
Mar 08 Javascript
微信小程序仿微信运动步数排行(交互)
Jul 13 Javascript
详解javascript appendChild()的完整功能
Aug 18 Javascript
在VUE中实现文件下载并判断状态的方法
Nov 08 Javascript
jQuery操作元素的内容和样式完整实例分析
Jan 10 jQuery
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
配置支持SSI
2006/11/25 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
javaScript如何生成xmlhttp
2013/12/16 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
JavaScript之实现一个简单的Vue示例
2019/01/17 Javascript
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
[01:02:47]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
python使用循环实现批量创建文件夹示例
2014/03/25 Python
Python基于pillow判断图片完整性的方法
2016/09/18 Python
解决python3中cv2读取中文路径的问题
2018/12/05 Python
pandas读取CSV文件时查看修改各列的数据类型格式
2019/07/07 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
Python list运算操作代码实例解析
2020/01/20 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
PyCharm MySQL可视化Database配置过程图解
2020/06/09 Python
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
Draper James官网:知名演员瑞茜·威瑟斯彭所创品牌
2017/10/25 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
技术负责人任命书
2014/06/05 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
端午节活动总结报告
2015/02/11 职场文书
师范生见习总结范文
2015/06/23 职场文书
Python 正则模块详情
2021/11/02 Python
漫画「日和酱的要求是绝对的」第3卷封面公开
2022/03/21 日漫
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫
V Rising 服务器搭建图文教程
2022/06/16 Servers