在vue中同时使用过渡和动画
2019-02-24 20:31
267 查看
我们先来看一个例子:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>在vue中同时使用过渡和动画</title> <link rel="stylesheet" href="./animate.css"> <script src="../node_modules/vue/dist/vue.js"></script> </head> <body> <div id="root"> <transition name="fade" enter-active-class="animated swing" leave-active-class="animated shake"> <div v-show="show">hello world</div> </transition> <button @click="handleClick">change</button> </div> <script> var vm=new Vue({ el:"#root", data:{ show:true }, methods:{ handleClick:function () { this.show=!this.show } } }) </script> </body> </html>
可以实现在内容进入的时候左右晃动,消失的时候上下抖动的效果,接下来我们发现一旦刷新页面,这个元素第一次出现的时候并没有出现动画效果,为此可以这样做,自定义一个appear-active-class,让它等于 enter-active-class:
appear-active-class="animated swing"
并再添加一个appear的属性,表示在一开始出现的时候元素会有一个动画效果,为我们自定义的属性,这个属性用了animate库里的swing一个动画:
<transition appear name="fade" enter-active-class="animated swing" leave-active-class="animated shake" appear-active-class="animated swing"> <!--刷新的时候也有动画效果--> <div v-show="show">hello world</div> </transition>
这样刷新的时候也就会有动画效果了。现在这个元素上只有animate这个库里的动画效果,相当于@keyframes的动画 效果,我们希望结合transition过渡的效果,可以这样:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>在vue中同时使用过渡和动画</title> <link rel="stylesheet" href="./animate.css"> <script src=".././node_modules/vue/dist/vue.js"></script> <style> .fade-enter, .fade-leave-to { opacity: 0; } .fade-enter-active, .fade-leave-active{ transition: opacity 3s; } </style> </head> <body> <div id="root"> <!--表示动画的时长以transition过渡效果定义的为准--> <transition appear name="fade" enter-active-class="animated swing fade-enter-active" leave-active-class="animated shake fade-leave-active" appear-active-class="animated swing"> <!--刷新的时候也有动画效果--> <div v-show="show">hello world</div> </transition> <button @click="handleClick">change</button> </div> <script> var vm=new Vue({ el:"#root", data:{ show:true }, methods:{ handleClick:function () { this.show=!this.show } } }) </script> </body> </html>
这样动画就有一个透明度变化的效果。现在我们很明显的知道transition过渡的效果是3s,那么animate提供的动画效果是几秒呢?打开animate.css源码进行查看,实际上animated定义的动画时长是1s:
.animated { -webkit-animation-duration: 1s; animation-duration: 1s; -webkit-animation-fill-mode: both; animation-fill-mode: both; }
那么问题来了,最终动画执行的时间是以什么为标准来计算的呢?这个时候无我们可以手动来设置动画执行的时长,我们现在已3s为整个动画执行的时间,可以这么设置:
<transition type="transition" appear name="fade" enter-active-class="animated swing fade-enter-active" leave-active-class="animated shake fade-leave-active" appear-active-class="animated swing"> <!--刷新的时候也有动画效果--> <div v-show="show">hello world</div> </transition>
表示动画的时长以transition执行的时长为准。除了这样设置,我们还可以自定义总时长:
<transition :duration="5000" appear name="fade" enter-active-class="animated swing fade-enter-active" leave-active-class="animated shake fade-leave-active" appear-active-class="animated swing"> <!--刷新的时候也有动画效果--> <div v-if="show">hello world</div> </transition>
表示动画样式5秒后才会被清除掉,而文字3秒就会弹出来。设置的更复杂一些,可以写成,入场动画为5秒,出场动画为8秒:
<transition :duration="{enter:5000, leave:8000}" appear name="fade" enter-active-class="animated swing fade-enter-active" leave-active-class="animated shake fade-leave-active" appear-active-class="animated swing"> <!--刷新的时候也有动画效果--> <div v-if="show">hello world</div> </transition>
相关文章推荐
- Vue 中的动画特效三——在Vue中同时使用过渡和动画
- Vue动画--同时使用过渡和动画
- VUE—— transition(过渡&动画)的简单使用
- 使用 vue-router 切换页面时怎么设置过渡动画
- Vue动画--组件的过渡
- vue 和animate.css 的动画使用
- 开始使用 Transitions(过渡动画) (part 1)
- Vue.js每天必学之过渡与动画
- Vue1.0学习总结(3)———vue1.0的生命周期、vue计算属性computed的使用、vue实例(vm)上方法总结、vue结合动画使用
- Vue中的基础过渡动画及实现原理解析
- 【D3使用教程】(5) 动态更新与过渡动画
- vue2.0 transition 多个元素嵌套使用过渡
- Vue 中的动画特效二——在Vue中使用Animate.css库
- 如何使用vue使同一个弹窗同时能实现添加和编辑
- 简单谈谈vue的过渡动画(推荐)
- Vue2.0过渡动画效果transition
- Vue相关(过渡动画)
- Android常用动画alpha和rotate同时使用
- Vuejs第七篇之Vuejs过渡动画案例全面解析
- iOS使用动画连贯过渡界面转换