Vue.js实现微信过渡动画左右切换效果


Posted in Javascript onJune 13, 2017

前言

在awesomes上寻找移动端框架的时候意外发现了vux的页面切换效果,后面由于其他考虑没有选用vuex但是这个切换效果确实感觉很有新意,也就看了下源码,这里贴一份备用。

需要用到的技术栈:Vue+Vuex

先看看效果图

Vue.js实现微信过渡动画左右切换效果
过渡动画

示例代码

//app.vue
<transition :name="'vux-pop-' + (direction === 'forward' ? 'in' : 'out')">
 <keep-alive>
 <router-view class="router-view" ></router-view>
 </keep-alive>
</transition>
<script>
 import { mapState } from 'vuex'
 import sideFooter from "./components/Footer.vue"

 export default {
 name: 'app',
 data () {
 return {
 showFooter : false
 }
 },
 components : {
 sideFooter
 },
 computed:{
 ...mapState({
 direction: state => state.mutations.direction
 })
 },
 }
</script>

<style scoped>
 .vux-pop-out-enter-active,
 .vux-pop-out-leave-active,
 .vux-pop-in-enter-active,
 .vux-pop-in-leave-active {
 will-change: transform;
 transition: all 250ms;
 height: 100%;
 top: 0;
 position: absolute;
 backface-visibility: hidden;
 perspective: 1000;
 }

 .vux-pop-out-enter {
 opacity: 0;
 transform: translate3d(-100%, 0, 0);
 }

 .vux-pop-out-leave-active {
 opacity: 0;
 transform: translate3d(100%, 0, 0);
 }

 .vux-pop-in-enter {
 opacity: 0;
 transform: translate3d(100%, 0, 0);
 }

 .vux-pop-in-leave-active {
 opacity: 0;
 transform: translate3d(-100%, 0, 0);
 }
</style>
// main.js
const history = window.sessionStorage;
history.clear()
let historyCount = history.getItem('count') * 1 || 0;
history.setItem('/', 0);

router.beforeEach(function (to, from, next) {

 const toIndex = history.getItem(to.path);
 const fromIndex = history.getItem(from.path);

 if (toIndex) {
 if (!fromIndex || parseInt(toIndex, 10) > parseInt(fromIndex, 10) || (toIndex === '0' && fromIndex === '0')) {
 store.commit('UPDATE_DIRECTION', {direction: 'forward'})
 } else {
 store.commit('UPDATE_DIRECTION', {direction: 'reverse'})
 }
 } else {
 ++historyCount;
 history.setItem('count', historyCount);
 to.path !== '/' && history.setItem(to.path, historyCount);
 store.commit('UPDATE_DIRECTION', {direction: 'forward'})
 }
 next()
});

这里还用到了vuex,但是我stroe写了很多就不提出来了,主要就是通过 UPDATE_DIRECTION方法更新每一次的路由方向是前进还是后退。

man.js里面主要思想就是给路由增加一个索引存到sessionStorage里面,以点击过的索引值不变,新增加的路由,索引增加1,同时count+1,这样在页面切换时通过比较索引值的大小,大的向右小的向左,做到左右有规律的过渡。

好了至此一个左右切换的过渡效果就成了,最近由于一直在开发也没怎么更新文章,如果有朋友有好的想法欢迎与我交流。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
Ctrl+Enter提交内容信息
Jun 26 Javascript
二级域名转向类
Nov 09 Javascript
jQuery构造函数init参数分析续
May 13 Javascript
javascript实现图片跟随鼠标移动效果的方法
May 13 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
Jun 05 Javascript
关于JavaScript 原型链的一点个人理解
Jul 31 Javascript
JavaScript用JSONP跨域请求数据实例详解
Jan 06 Javascript
bootstrap的常用组件和栅格式布局详解
May 02 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
Jul 04 Javascript
node+vue实现用户注册和头像上传的实例代码
Jul 20 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
Jul 11 jQuery
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
Sep 24 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
Jun 13 #Javascript
基于pako.js实现gzip的压缩和解压功能示例
Jun 13 #Javascript
基于vue2框架的机器人自动回复mini-project实例代码
Jun 13 #Javascript
深究AngularJS中ng-drag、ng-drop的用法
Jun 12 #Javascript
深究AngularJS中$sce的使用
Jun 12 #Javascript
JS身份证信息验证正则表达式
Jun 12 #Javascript
用原生JS实现简单的多选框功能
Jun 12 #Javascript
You might like
php的sso单点登录实现方法
2015/01/08 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
jquery Mobile入门—外部链接切换示例代码
2013/01/08 Javascript
javascript中直接引用Microsoft的COM生成Word
2014/01/20 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
2014/06/24 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
2017/01/17 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
Vue入门之数据绑定(小结)
2018/01/08 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
Django开发的简易留言板案例详解
2018/12/04 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
简单了解Python读取大文件代码实例
2019/12/18 Python
Numpy之reshape()使用详解
2019/12/26 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
Pycharm Git 设置方法
2020/09/15 Python
python实现三壶谜题的示例详解
2020/11/02 Python
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
2012/12/28 HTML / CSS
新闻专业个人求职信
2013/12/19 职场文书
国际贸易实训报告
2014/11/05 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
监护人证明
2015/06/19 职场文书
24年收藏2000多部退役军用电台
2022/02/18 无线电