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 相关文章推荐
javascript使用window.open提示“已经计划系统关机”的原因
Aug 15 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
Aug 06 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
Sep 07 Javascript
理解javascript中的MVC模式
Jan 28 Javascript
jquery中实现时间戳与日期相互转换
Apr 12 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
Sep 09 Javascript
JavaScript设计模式之代理模式详解
Jun 09 Javascript
通过fastclick源码分析彻底解决tap“点透”
Dec 24 Javascript
Node.js使用MySQL连接池的方法实例
Feb 11 Javascript
微信小程序跨页面传递data数据方法解析
Dec 13 Javascript
JS中作用域以及变量范围分析
Jul 18 Javascript
JavaScript中作用域链的概念及用途讲解
Aug 06 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遍历并打印指定目录下所有文件实例
2014/02/10 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
各种常用的JS函数整理
2013/10/25 Javascript
Jquery给基本控件的取值、赋值示例
2014/05/23 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
javascript常用函数(1)
2015/11/04 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
jQuery基本筛选选择器实例代码
2017/02/06 Javascript
vue深入解析之render function code详解
2017/07/18 Javascript
zTree获取当前节点的下一级子节点数实例
2017/09/05 Javascript
Node.js系列之连接DB的方法(3)
2019/08/30 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
python实现挑选出来100以内的质数
2015/03/24 Python
python实现京东秒杀功能
2018/07/30 Python
基于Python实现定时自动给微信好友发送天气预报
2018/10/25 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
Pytorch实现将模型的所有参数的梯度清0
2020/06/24 Python
python 模拟登陆163邮箱
2020/12/15 Python
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
Unix/Linux开发面试题
2016/08/16 面试题
文员个人求职自荐信
2013/09/21 职场文书
2014年社区庆元旦活动方案
2014/03/08 职场文书
职务聘任书范文
2014/03/29 职场文书
我的教育故事演讲稿
2014/05/04 职场文书
2014校长四风问题对照检查材料思想汇报
2014/09/16 职场文书
background-position百分比原理详解
2021/05/08 HTML / CSS
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS