过度&动画
1,vue 动画
① 操作 css 的 trasition 或 animation
② vue 会给目标元素添加 / 移除特定的 class
③ 过渡的相关类名
xxx-enter-active:指定显示的 transition
xxx-leave-active:指定隐藏的 transition
xxx-enter / xxx-leave-to:指定隐藏时的样式
2,单元素/ 组件的过渡
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.fade-enter-active,.fade-leave-active{
transition:opacity .5s;
}
.fade-enter,.fade-leave-to{
opacity:0
}
</style>
</head>
<body>
<div id="app">
<button @click="show=!show">Toggle</button>
<transition name="fade">
<p v-if="show">hello</p>
</transition>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
new Vue({
el:'#app',
data:{
show:true
}
})
</script>
</body>
</html>
在进入 / 离开 的过渡中,会有6个 class 切换:
① v-enter:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。
② v-enter-active:定义进入过渡生效时的状态,在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡 / 动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。
③ v-enter-to:定义进入过渡的结束状态,在元素被插入之后下一帧生效(与此同时 v-enter 被移除) ,在过渡 / 动画 完成之后移除。
④ v-leave:定义离开过渡时的开始状态,在离开过渡被触发时立刻生效,下一帧被移除。
⑤ v-leave-active:定义离开过渡生效时的状态,在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡 / 动画完成之后移除,整个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。
⑥ v-leave-to:定义离开过渡的结束状态,在离开过渡被触发之后下一帧失效(与此同时 v-leave 被删除),在过渡 / 动画完成之后移除。
3,css 过渡
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.slide-fade-enter-active{
transition:all .3s ease;
}
.slide-fade-leave-active{
transition: all .8s cubic-bezier(1.0, 0.5, 0.8, 1.0);
}
.slide-fade-enter, .slide-fade-leave-to{
transform: translateX(10px);
opacity: 0;
}
</style>
</head>
<body>
<div id="app">
<button @click="show=!show">Toggle render</button>
<transition name="slide-fade">
<p v-if="show">hello</p>
</transition>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
new Vue({
el:'#app',
data:{
show:true
}
})
</script>
</body>
</html>
4,css 动画
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.bounce-enter-active {
animation: bounce-in .5s;
}
.bounce-leave-active {
animation: bounce-in .5s reverse;
}
@keyframes bounce-in {
0% {
transform: scale(0);
}
50% {
transform: scale(1.5);
}
100% {
transform: scale(1);
}
}
</style>
</head>
<body>
<div id="app">
<button @click="show=!show">Toggle show</button>
<transition name="bounce">
<p v-if="show">hello,world.</p>
</transition>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
new Vue({
el:'#app',
data:{
show:true
}
})
</script>
</body>
</html>
https://cn.vuejs.org/v2/guide/transitions.html

浙公网安备 33010602011771号