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 异步调用框架 (Part 4 - 链式调用)
Aug 04 Javascript
JS获得图片alt信息的方法
Apr 01 Javascript
JS实现仿苹果底部任务栏菜单效果代码
Aug 28 Javascript
原生js实现autocomplete插件
Apr 14 Javascript
jQuery简单验证上传文件大小及类型的方法
Jun 02 Javascript
JS声明式函数与赋值式函数实例分析
Dec 13 Javascript
微信小程序 下拉菜单简单实例
Apr 13 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
Sep 17 Javascript
vue弹窗组件使用方法
Apr 28 Javascript
webpack项目使用eslint建立代码规范实现
May 16 Javascript
vue 解决路由只变化参数页面组件不更新问题
Nov 05 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
Jul 28 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 SPL标准库之接口(Interface)详解
2015/05/11 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
异步动态加载JS并运行(示例代码)
2013/12/13 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
基于Jquery easyui 选中特定的tab
2015/11/17 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
原生js更改css样式的两种方式
2017/03/15 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
Vue 组件注册实例详解
2019/02/23 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
vuex的使用和简易实现
2021/01/07 Vue.js
Python中int()函数的用法浅析
2017/10/17 Python
详解Python中的四种队列
2018/05/21 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
用python批量移动文件
2021/01/14 Python
使用CSS变量实现炫酷惊人的悬浮效果
2019/04/26 HTML / CSS
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
银行开业庆典方案
2014/02/06 职场文书
党支部公开承诺书
2014/03/28 职场文书
超市开店计划书
2014/04/26 职场文书
国际经济贸易专业自荐信
2014/06/13 职场文书
员工教育培训协议书
2014/09/27 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书
2014年检验科工作总结
2014/11/22 职场文书
后勤工作个人总结
2015/02/28 职场文书
毕业设计致谢词
2015/05/14 职场文书
感恩教育观后感
2015/06/17 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书