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 相关文章推荐
图片自动缩小 点击放大
Jul 07 Javascript
滚动图片效果 jquery实现回旋滚动效果
Jan 08 Javascript
js判断iframe内的网页是否滚动到底部触发事件
Mar 18 Javascript
js单独获取一个checkbox看其是否被选中
Sep 22 Javascript
Javascript基础教程之数据类型 (数值 Number)
Jan 18 Javascript
jquery popupDialog 使用 加载jsp页面的方法
Oct 25 Javascript
ajax图片上传,图片异步上传,更新实例
Dec 30 Javascript
vue.js  父向子组件传参的实例代码
Oct 29 Javascript
js序列化和反序列化的使用讲解
Jan 19 Javascript
layer.js之回调销毁对话框的例子
Sep 11 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
Dec 15 Javascript
JavaScript模拟实现网易云轮播效果
Apr 04 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 date函数参数详解
2006/11/27 PHP
php实现图片缩放功能类
2013/12/18 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
JavaScript入门教程(10) 认识其他对象
2009/01/31 Javascript
JavaScript 页面坐标相关知识整理
2010/01/09 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
jQuery技巧总结
2011/01/01 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
详解a标签添加onclick事件的几种方式
2019/03/29 Javascript
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
Vue.js递归组件实现组织架构树和选人功能
2019/07/04 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
Python即时网络爬虫项目启动说明详解
2018/02/23 Python
Django使用Jinja2模板引擎的示例代码
2019/08/09 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
历史学专业推荐信
2013/11/06 职场文书
客户表扬信范文
2014/01/10 职场文书
客户经理竞聘演讲稿
2014/05/15 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
小学班级口号
2014/06/09 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
党员公开承诺书2015
2015/01/21 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
消防安全主题班会
2015/08/12 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android