Vue实现仿微信,如飘柔般顺滑的页面转场动画
前言
现在移动端交互上越来越追求原生体验,最近做的App刚好需要做页面转场效果,类似微信的切换效果。
Vue2.0中transition
组件的使用
Vue2.0提供了transition
组件供我们使用,我们可以将页面嵌套到transition
组件中,实现转场效果。在进入/离开的过渡中,会有6个class
切换。
v-enter
:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。v-enter-active
:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。v-enter-to
: 定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时v-enter
被移除),在过渡/动画完成之后移除。v-leave
: 定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。v-leave-active
:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。v-leave-to
: 定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave 被删除),在过渡/动画完成之后移除。
了解了以上状态之后,实际应用中我们只需要用到v-enter-active
,v-leave-active
。
App.vue
<div id="app" ><transition :name="transitionName"><router-view/></transition>
</div>
复制代码
定义slide-left,slide-right两种状态,分别表示页面向左滑动和向右滑动,即前进和后退的转场效果。
common.scss
.slide-left-enter-active {animation-name: slide-left-in;animation-duration: .3s;
}
.slide-left-leave-active {animation-name: slide-left-out;animation-duration: .3s;
}
.slide-right-enter-active {animation-name: slide-right-in;animation-duration: .3s;
}
.slide-right-leave-active {animation-name: slide-right-out;animation-duration: .3s;
}@keyframes slide-left-in {0% {transform: translate3d(100%, 0, 0);}100% {transform: translate3d(0, 0, 0);}
}@keyframes slide-left-out {0% {transform: translate3d(0, 0, 0);}100% {transform: translate3d(-100%, 0, 0);}
}@keyframes slide-right-in{0% {transform: translate3d(-100%, 0, 0);}100% {transform: translate3d(0, 0, 0);}
}
@keyframes slide-right-out {0% {transform: translate3d(0, 0, 0);}100% {transform: translate3d(100%, 0, 0);}
}
复制代码
监听$route
实现页面切换动画
在使用vue-router
的应用中,路由对象都会被注入到每个组件中,可以通过this.$route
获取当前的路由对象。页面切换的难点就在于,如何判断页面前进还是后退,看以下代码。
App.vue
watch: {// 监听路由切换转场动画$route(to, from) {const routeDeep = ['/', '/team', '/judge', '/finish', '/noData', '/info']const toDepth = routeDeep.indexOf(to.path)const fromDepth = routeDeep.indexOf(from.path)this.transitionName = toDepth > fromDepth ? 'slide-left' : 'slide-right'}
}
复制代码
在单页应用中,可以根据页面的层级定义出routeDeep
,比如info
页面就是属于二级页面,排在最后,其他为一级页面。当页面从一级跳转到二级,采用前进动画,二级跳转到一级,采用后退动画。暂不考虑复杂的嵌套页面的情况。
结语
代码创造世界,世界属于三体。后会有期。
Vue实现仿微信,如飘柔般顺滑的页面转场动画相关推荐
- uniapp可以封装组件嘛_uniapp聊天App实例|vue+uniapp仿微信界面|红包|朋友圈
一.功能阐述 今天给大家分享的是基于UniApp+Vue+Vuex+swiper+uniPop等技术开发的仿微信原生App聊天室|仿微信聊天界面实例项目uniapp-chatroom,实现了发送图文消 ...
- vue+vant仿微信聊天画面做了个点击按钮出现土味情话的界面
最近在学习框架vue,不得不说vue确实上手快,但用的vant组件库里找了老半天都没找到聊天框样式的组件,啧,实在想用,就自己搭了个,其实就这个气泡框的角花了点时间,用到了伪元素类. 效果图如下: 直 ...
- vue+h5仿微信网页版聊天室vueWebChat项目
很早之前就有使用html5技术开发过一个web版仿微信.微博聊天,后来想着用vue技术开发一版,后面由于各种事情,一直没能落定.最近有些空闲就使用vue开发了一个vueWechat聊天室IM项目. 基 ...
- vue + element-ui 聊天_vue网页版聊天Vue+ElementUI仿微信界面聊天实例
vue+vuex+vue-cli+vue-router+element-ui+swiper等技术开发仿微信pc端界面聊天应用,实现了发送消息+表情(动图gif).图片/视频预览.右键长按菜单.红包/朋 ...
- 用离屏canvas制作仿Prezi页面转场动画特效
用离屏canvas制作网站页面特效.仿Prezi转场特效 首屏效果 页面切换转场效果 · 首屏圆形循环扩散效果 首屏效果的难点在于圆形循环扩散动画和贝塞尔曲线的绘制.圆形逐渐扩大的动画并不难,关键在于 ...
- vue.js仿微信聊天窗口展示组件
原链接:https://www.jianshu.com/p/0faf8e78d0a5 源码:https://github.com/doterlin/vue-wxChat 演示地址:https://do ...
- AS作业三仿微信APP实现对有recycleView的页面进行点击跳转设计
RecycleView是Android5.0推出的,它用来代替ListView和GridView,并且能够实现瀑布流中的布局,更加高级并且更加灵活,提供更为高效的回收复用机制,同时实现管理和视图的解耦 ...
- vue仿微博评论回复_vue 网页版聊天系统|仿微信、微博网页端
最近一段时间一直在学习vue框架,对比了下react和angular发现vue上手快多了,之前有使用vue开发个vue版仿微信手机端IM聊天,最近想继续加强学习下,就做了一版网页端的vue聊天室. 依 ...
- nuxt-chat聊天室|vue仿微信/探探界面nuxt+vue+vuex|朋友圈
Nuxt-Chatroom 基于Nuxt.js+Vue.js仿微信|探探App界面聊天社交 运用nuxt.js+vue.js+vuex+vpopup+vant+webpack等技术架构开发的社交聊天室 ...
最新文章
- Java实现SSH模式加密
- 动态多维数组在 VC 中的应用
- 计算机网络-TCP协议
- 树莓派2代B model 上手初体验,不用显示器,Python GPIO 点亮一颗LED
- Python快速学习07:文本文件的操作
- GIT界的神探--bisect
- 武警五防一体化是什么?五防光端机产品介绍!
- mysql update多个字段_常见的MySQL命令大全fourth
- 商厂里调货拿包包程序
- 德银病危:心比天高,却落下黄粱一梦
- 卷组删除pv_LVM 移除PV步骤
- .net接入微信二维码支付(模式二)
- ip地址为61.179.150.39/28,问其子网号为多少,广播号为多少,可用ip地址范围是多少
- 降息为什么会导致货币贬值呢,为啥货币贬值利于出口
- 值得珍藏的免费观影网站
- KY122 找出直系亲属
- Linux 入门基本操作
- 编译原理实验:Java实现SLR(1)语法分析器
- Mysql主从同步报错解决:Error executing row event: Table zabbix.history-uint doesnt exist
- python列表中的元素可以是不同类型_Python列表中所有元素必须为相同类型的数据。...