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 confirm选择判断
Oct 18 Javascript
JavaScript 解析Json字符串的性能比较分析代码
Dec 16 Javascript
JavaScript框架(iframe)操作总结
Apr 16 Javascript
js替换字符串中所有指定的字符(实现代码)
Aug 17 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
Dec 15 Javascript
js实现微博发布小功能
Jan 12 Javascript
微信小程序 登录实例详解
Jan 16 Javascript
JS查找英文文章中出现频率最高的单词
Mar 20 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
Sep 20 Javascript
微信小程序 轮播图实现原理及优化详解
Sep 29 Javascript
javascript实现商品图片放大镜
Nov 28 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
Jan 26 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
NOT NULL 和NULL
2007/01/15 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
php获取字符串中各个字符出现次数的方法
2015/02/23 PHP
使用php转义输出HTML到JavaScript
2015/03/27 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
jquery 插件 任意位置浮动固定层
2008/12/25 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
JavaScript面向对象之私有静态变量实例分析
2016/01/14 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
2016/05/12 Javascript
JavaScript 中有关数组对象的方法(详解)
2016/08/15 Javascript
微信小程序通过保存图片分享到朋友圈功能
2018/05/24 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
小程序数据通信方法大全(推荐)
2019/04/15 Javascript
微信小程序实现商城倒计时
2020/11/01 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
用Python给文本创立向量空间模型的教程
2015/04/23 Python
tensorflow识别自己手写数字
2018/03/14 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
如何基于python测量代码运行时间
2019/12/25 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
Html5自定义字体解决方法
2019/10/09 HTML / CSS
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
房地产销售经理岗位职责
2014/01/01 职场文书
预备党员思想汇报
2014/01/08 职场文书
优秀公益广告词大全
2014/03/19 职场文书
促销活动总结
2014/04/28 职场文书
药品营销策划方案
2014/06/15 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL