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拦截alert对话框另类应用
Jan 16 Javascript
IE6下拉框图层问题探讨及解决
Jan 03 Javascript
jquery 无限级下拉菜单的简单实现代码
Feb 21 Javascript
js小数运算出现多位小数如何解决
Oct 08 Javascript
Bootstrap实现带动画过渡的弹出框
Aug 09 Javascript
微信小程序 视图容器组件的详解及实例代码
Jan 19 Javascript
jquery实时获取时间的简单实例
Jan 26 Javascript
Bootstrap路径导航与分页学习使用
Feb 08 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
Feb 13 Javascript
node.js利用redis数据库缓存数据的方法
Mar 01 Javascript
vue中使用cropperjs的方法
Mar 01 Javascript
微信小程序实现翻牌抽奖动画
Sep 21 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和MySql中计算时间差的方法
2011/04/22 PHP
ThinkPHP发送邮件示例代码
2016/10/08 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
php实现微信支付之退款功能
2018/05/30 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
js获取location.href的参数实例代码
2013/08/02 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
jQuery中;function($,undefined) 前面的分号的用处
2014/12/17 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
2017/09/14 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
快速解决vue-cli在ie9+中无效的问题
2018/09/04 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
python求众数问题实例
2014/09/26 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
django自带调试服务器的使用详解
2019/08/29 Python
pytorch实现MNIST手写体识别
2020/02/14 Python
logging level级别介绍
2020/02/21 Python
python框架flask入门之路由及简单实现方法
2020/06/07 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
美国高级音响品牌:Master&Dynamic
2018/07/05 全球购物
编写strcpy函数
2014/06/24 面试题
优秀应届毕业生自荐信
2013/11/16 职场文书
知识竞赛活动方案
2014/02/18 职场文书
社区食品安全实施方案
2014/03/28 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
医院标语大全
2014/06/23 职场文书
植树造林的宣传标语
2014/06/23 职场文书
公共机构节能宣传周活动总结
2014/07/09 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
基层党组织整改方案
2014/10/25 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP