Vue路由切换时的左滑和右滑效果示例


Posted in Javascript onMay 29, 2018

如何实现Vue路由切换时的左滑和右滑效果,因为原作者ustbhuangyi老师的两个慕课项目中都没有这样的效果,于是突发奇想要做这个功能,看了看QQ、微信都没这样的效果,最后发现SegmentFault(思否) 和掘金两个app都有这样的效果,就以此为参考开始做了。

transition

首先看看官网 淡入淡出动画的例子:

<div id="demo">
 <button v-on:click="show = !show">
  Toggle
 </button>
 <transition name="fade">
  <p v-if="show">hello</p>
 </transition>
</div>
new Vue({
 el: '#demo',
 data: {
  show: true
 }
})
.fade-enter-active, .fade-leave-active {
 transition: opacity .5s;
}
.fade-enter, .fade-leave-to {
 opacity: 0;
}

左右切换效果

CSS部分

我们要实现的是左右切换的效果,所以要定义两种动画(左滑和右滑)

.transitionBody{
 transition: all 0.15s ease; /*定义动画的时间和过渡效果*/
}

.transitionLeft-enter,
.transitionRight-leave-active {
  -webkit-transform: translate(100%, 0);
  transform: translate(100%, 0); 
   /*当左滑进入右滑进入过渡动画*/
}

.transitionLeft-leave-active,
.transitionRight-enter {
  -webkit-transform: translate(-100%, 0); 
  transform: translate(-100%, 0); 
}

HTML部分

这里的 keep-alive 是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM,我们要把它也包裹在transition标签内,否则页面将重新渲染,切换的动画也会卡顿

<transition :name="transitionName">
  <keep-alive>
      <router-view class="transitionBody"></router-view>
  </keep-alive>
</transition>

JS部分

在Vue组件中,data必须是一个函数,将对象 {transitionName: ‘transitionLeft'} 挂载到Vue实例中,然后我们可以监听路由的 to 和 from 来判断此时应该左滑还是右滑,来动态切换transition的name值。

export default {
 data() {
   return {
    transitionName: 'transitionLeft'
   };
 },
 watch: { 
  '$route' (to, from) { 
   const arr = ['/goods','/ratings','/seller'];
   const compare = arr.indexOf(to.path)>arr.indexOf(from.path);
   this.transitionName = compare ? 'transitionLeft' : 'transitionRight';
  } 
 }  
}

点击链接体验一下: https://zc95.github.io/demo/vue-sell

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
网站基于flash实现的Banner图切换效果代码
Oct 14 Javascript
js图片模糊切换显示特效的方法
Feb 17 Javascript
jquery带翻页动画的电子杂志代码分享
Aug 21 Javascript
jquery实现华丽的可折角广告代码
Sep 02 Javascript
js实现兼容性好的微软官网导航下拉菜单效果
Sep 07 Javascript
提升jQuery的性能需要做好七件事
Jan 11 Javascript
JavaScript如何实现组合列表框中元素移动效果
Mar 01 Javascript
基于AngularJS的简单使用详解
Sep 10 Javascript
微信小程序实现星星评价效果
Nov 02 Javascript
vue列表单项展开收缩功能之this.$refs的详解
May 05 Javascript
vue实现商品列表的添加删除实例讲解
May 14 Javascript
动态实现element ui的el-table某列数据不同样式的示例
Jan 22 Javascript
Vue 组件传值几种常用方法【总结】
May 28 #Javascript
讲解vue-router之命名路由和命名视图
May 28 #Javascript
微信小程序实现图片上传功能
May 28 #Javascript
微信小程序上传图片功能(附后端代码)
Jun 19 #Javascript
讲解vue-router之什么是编程式路由
May 28 #Javascript
讲解vue-router之什么是嵌套路由
May 28 #Javascript
微信小程序上传图片实例
May 28 #Javascript
You might like
php打开远程文件的方法和风险及解决方法
2013/11/12 PHP
smarty模板中拼接字符串的方法
2014/02/14 PHP
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
iframe的父子窗口之间的对象相互调用基本用法
2013/09/03 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
Js+Ajax,Get和Post在使用上的区别小结
2016/06/08 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
2017/03/08 Javascript
vue表单自定义校验规则介绍
2018/08/28 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
python中__call__方法示例分析
2014/10/11 Python
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
Python实现多线程HTTP下载器示例
2017/02/11 Python
Python部署web开发程序的几种方法
2017/05/05 Python
浅谈对yield的初步理解
2017/05/29 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
美国宠物护理专家:Revival Animal Health
2020/01/05 全球购物
单位办理社保介绍信
2014/01/10 职场文书
幼儿园教师工作制度
2014/01/22 职场文书
初一学生评语大全
2014/04/24 职场文书
幼儿园教师演讲稿
2014/05/06 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
母亲节寄语大全
2015/02/27 职场文书
银行稽核岗位职责
2015/04/13 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
企业承诺书格式范文
2015/04/28 职场文书
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫