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 相关文章推荐
js验证表单第二部分
Nov 25 Javascript
JQuery 获得绝对,相对位置的坐标方法
Feb 09 Javascript
jQuery实现购物车多物品数量的加减+总价计算
Jun 06 Javascript
AspNet中使用JQuery上传插件Uploadify详解
May 20 Javascript
jquery实现表单验证并阻止非法提交
Jul 09 Javascript
jquery插件之文字间歇自动向上滚动效果代码
Feb 25 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
Sep 04 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
Mar 29 Javascript
使用classList来实现两个按钮样式的切换方法
Jan 24 Javascript
Vue2.0用户权限控制解决方案的示例
Feb 10 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
Aug 24 Javascript
Vue 的双向绑定原理与用法揭秘
May 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
phpMyadmin 用户权限中英对照
2010/04/02 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
深入理解PHP中的count函数
2016/05/31 PHP
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
ajax的hide隐藏问题解决方法
2012/12/11 Javascript
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
JavaScript中this详解
2015/09/01 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
javascript基于定时器实现进度条功能实例
2017/10/13 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
JS实现DOM删除节点操作示例
2018/04/04 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
vue项目打包部署到服务器的方法示例
2018/08/27 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
2020/12/23 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
python中实现php的var_dump函数功能
2015/01/21 Python
python实现模拟按键,自动翻页看u17漫画
2015/03/17 Python
pyqt5自定义信号实例解析
2018/01/31 Python
keras获得model中某一层的某一个Tensor的输出维度教程
2020/01/24 Python
python和go语言的区别是什么
2020/07/20 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
化妆品促销方案
2014/02/24 职场文书
学雷锋活动倡议书
2014/08/30 职场文书
通知格式
2015/04/27 职场文书
水知道答案观后感
2015/06/08 职场文书
贫民窟的百万富翁观后感
2015/06/09 职场文书
python3使用diagrams绘制架构图的步骤
2021/04/08 Python
MySQL 覆盖索引的优点
2021/05/19 MySQL
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python