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实现自定义标签
May 08 Javascript
如何用js控制frame的隐藏或显示的解决办法
Mar 20 Javascript
JQuery 图片滚动轮播示例代码
Mar 24 Javascript
一个可以增加和删除行的table并可编辑表格中内容
Jun 16 Javascript
javascript中cookie对象用法实例分析
Jan 30 Javascript
JavaScript实现简单的tab选项卡切换
Jan 05 Javascript
JS构造函数与原型prototype的区别介绍
Jul 04 Javascript
node.js中 stream使用教程
Aug 28 Javascript
jQuery实现的导航下拉菜单效果示例
Sep 05 Javascript
微信小程序 转发功能的实现
Aug 04 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
Oct 22 Javascript
vue在响应头response中获取自定义headers操作
Jul 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
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
2017/02/23 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
实例讲解PHP表单
2020/06/10 PHP
javascript 写类方式之八
2009/07/05 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
jquery简易手风琴插件的封装
2020/10/13 jQuery
jquery插件实现轮播图效果
2020/10/19 jQuery
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
Python读取Excel的方法实例分析
2015/07/11 Python
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
详解django实现自定义manage命令的扩展
2019/08/13 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
利用 CSS3 实现的无缝轮播功能代码
2017/09/25 HTML / CSS
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
药学专业大专生的自我评价
2013/12/12 职场文书
护理专业自我鉴定
2014/01/30 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
完美的中文自荐信
2014/05/24 职场文书
2014年个人工作总结范文
2014/11/07 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技