Vue 在插入、更新或者移除 DOM 时,提供多种不一样方式的应用过渡效果。 包括如下工具:css
第一步: 须要把动画控制的元素用一个transition元素包裹起来,这个元素是Vue官方提供的。vue
例如:
// <transition> <h3>我被transition元素包裹有了动画效果</h3> </transition>
复制代码
第二步: 须要在style中定义你要控制元素的动画效果, Vue官方提供了6个class切换。bash
<style>
// 通常状况下, 元素的其实状态和终止状态的动画是同样的。
// v-enter(这是一个时间点)是元素进入以前的其实状态,此时尚未开始进入。
// v-lealve-to(这是一个时间点)是动画离开以后的终止状态,此时动画已经结束。
v-enter, v-leave-to{
opctity: 0 translateX(150px)
}
// v-enter-active是入场动画的时间段
// v-leave-active是离场动画的时间段
v-enter-active,v-leave-active{
transition: all 0.4s ease
}
</style>
复制代码
第三步: 能够给动画添加时间属性 :durationapp
// 设置 :duration="毫秒值" 属性来统一设置入场和离场动画的时长
例如:设置入场和离场的动画时长为200毫秒
<transition :duration="200"> <h3>我被transition元素包裹有了动画效果</h3> </transition>
// 能够给:duration的值为一个对象,分别设置入场和离场的动画时长
例如:
<transition :duration="{enter:200, leave:400}"> <h3>我设置了入场和离场的动画时长</h3> </transition>
复制代码
第四步: 咱们能够自定义动画的前缀 v- 将其替换为自定义的函数
例如:
<style>
my-enter, my-leave-to{
opctity: 0 translateX(150px)
}
my-enter-active,my-leave-active{
transition: all 0.4s ease
}
</style>
<transition name="my"> <h3>自定义动画的v-前缀</h3> </transition>
复制代码
// 当前元素先进行过分,完成以后新元素过分进入
<transition mode="out-in"> <h3>设置动画过分模式</h3> </transition>
// 新元素先进行过分,完成以后当前元素过分离开
<transition mode="in-out"> <h3>设置动画过分模式</h3> </transition>
复制代码
// 第一步一样将被动画控制的元素用transition元素包裹起来
// 第二步调用钩子函数, 这里只介绍部分钩子,其他的动画钩子请移步到官网查看
<transition
@before-enter="beforeEnter"
@enter="enter"
@after-enter="afterEnter"
>
<h1>半程动画</h1></transition>
// 第三步在配置对象中的methods属性中定义方法
new Vue({
el: "#app",
methods: {
// 注意:动画钩子函数的第一个参数 el 表示要执行动画的那个DOM元素,是个原生的js DOM元素
// beforeEnter函数表示动画入场以前,此时动画还未开始,此时编辑动画以前的样式
beforeEnter (el) {
el.style.transform = "translate(0,0)"
},
// enter函数表示动画开始以后,这里能够设置完成动画以后的结束状态
enter (el) {
// 注意:这里要加一句el.offsetWidth/Height/Left/Right,这句话没有实际的做用。
// 可是若是不写,不会出来动画效果,这里能够认为它会强制动画刷新。
el.offsetWidth
el.style.transform = "translate(150px, 450px)"
el.style.transiton = all 1s ease
done()
},
// 动画完成以后会调用这个函数
afterEnter (el) {
// 这里写动画完成之后的样式
}
}
})
复制代码
咱们能够经过如下特性来自定义过渡类名:工具
他们的优先级高于普通的类名,这对于 Vue 的过渡系统和其余第三方 CSS 动画库,如 Animate.css 结合使用十分有用。post
例如: 引入第三方 Animate.css 动画库动画
// 在动画库中选取咱们想要的动画效果名称,例如入场选 bounceln, 离场 bounceOut
<transition
enter-active-class="animated bounceln"
leave-active-class="animated bounceOut"
> <h3>引用第三方动画库</h3> </transition>
复制代码
我的推荐在使用Vue的时候若是动画效果简单本身写就行,复杂的话在引用第三方动画库。并且在给元素添加动画的时候,要考虑清楚是加全程动画仍是半程动画就够类。spa
Vue入门指南(快速上手vue)code