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 相关文章推荐
让AJAX不依赖后端接口实现方案
Dec 03 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
Sep 04 Javascript
理解javascript模块化
Mar 28 Javascript
jQuery动态添加
Apr 07 Javascript
使用JavaScript实现弹出层效果的简单实例
May 31 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
Jan 20 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
Aug 13 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
Oct 12 Javascript
jQuery实现高级检索功能
May 28 jQuery
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
Mar 02 Javascript
Vue项目打包压缩的实现(让页面更快响应)
Mar 10 Javascript
如何用JavaScript学习算法复杂度
Apr 30 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
《雄兵连》《烈阳天道》真的来了
2020/07/13 国漫
图书管理程序(二)
2006/10/09 PHP
利用PHP实现与ASP Banner组件相似的类
2006/10/09 PHP
php json_encode奇怪问题说明
2011/09/27 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
Laravel 队列使用的实现
2019/01/08 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
js宝典学习笔记(上)
2007/01/10 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
JavaScript面向对象程序设计教程
2016/03/29 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
vue实现动态数据绑定
2017/04/28 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
2019/03/07 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
Python教程之全局变量用法
2016/06/27 Python
Python实现XML文件解析的示例代码
2018/02/05 Python
Django如何自定义分页
2018/09/25 Python
详解python中eval函数的作用
2019/10/22 Python
python实现简单井字棋游戏
2020/03/04 Python
Python定时从Mysql提取数据存入Redis的实现
2020/05/03 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
军训生自我鉴定范文
2013/12/27 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
文员岗位职责
2015/02/04 职场文书