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 相关文章推荐
定义select的边框颜色
Apr 28 Javascript
JS 进度条效果实现代码整理
May 21 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
Jul 05 Javascript
不要使用jQuery触发原生事件的方法
Mar 03 Javascript
基于jquery实现的可编辑下拉框实现代码
Aug 02 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
Oct 16 Javascript
jQuery为DOM动态追加事件的方法
Feb 16 Javascript
vue实现学生录入系统之添加删除功能
Jul 11 Javascript
重学JS 系列:聊聊继承(推荐)
Apr 11 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
Jul 20 Javascript
vue3.0 项目搭建和使用流程
Mar 04 Vue.js
vue+element ui实现锚点定位
Jun 29 Vue.js
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
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
php的sso单点登录实现方法
2015/01/08 PHP
php编程实现简单的网页版计算器功能示例
2017/04/26 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
javascript常用对话框小集
2013/09/13 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
基于jquery实现省市联动效果
2015/11/23 Javascript
使用jQuery监听DOM元素大小变化
2016/02/24 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
2016/10/26 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
python递归下载文件夹下所有文件
2019/08/31 Python
pyinstaller打包程序exe踩过的坑
2019/11/19 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
Html5自定义字体解决方法
2019/10/09 HTML / CSS
HTML5实现直播间评论滚动效果的代码
2020/05/27 HTML / CSS
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
《富饶的西沙群岛》教学反思
2014/04/09 职场文书
车辆工程专业求职信
2014/04/28 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
煤矿安全协议书
2014/08/20 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
党员作风建设自查报告
2014/10/23 职场文书
办公经费申请报告
2015/05/15 职场文书
新手必备Python开发环境搭建教程
2021/05/28 Python