一 vue的过渡 (动画)
1> 利用class 名称
2》利用css动画库 (animal.css)
3》利用钩子函数
4》利用第三方js库
在vue 提供组件 transition实现过渡
在进入/离开的过渡中,会有 6 个 class 切换。
v-enter:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。
v-enter-active:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。
v-enter-to: 2.1.8版及以上 定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter 被移除),在过渡/动画完成之后移除。
v-leave: 定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。
v-leave-active:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。
v-leave-to: 2.1.8版及以上 定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave 被删除),在过渡/动画完成之后移除。
案例1
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<style>
#box {
width: 100px;
height: 100px;
background-color: red;
}
.fade-leave-active {
transition: 1s all;
}
.fade-leave-to {
opacity: 0;
}
.fade-enter {
opacity: 0;
}
.fade-enter-active {
transition: 1s all;
}
</style>
<body>
<div id="app">
<button @click="run">按钮</button>
<transition name="fade">
<div id="box" v-show="show"></div>
</transition>
</div>
<script src="../vue.js"></script>
<script>
new Vue({
el: "#app",
data: {
show: true,
},
methods: {
run: function() {
if (this.show) {
this.show = false
} else {
this.show = true
}
}
}
})
</script>
</body>
</html>
案例2
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<style>
#box {
width: 100px;
height: 100px;
background-color: red;
}
.fade-leave-active {
transition: 1s all;
}
.fade-leave-to {
opacity: 0;
transform: translateX(100px)
}
.fade-enter {
opacity: 0;
transform: translateY(100px)
}
.fade-enter-active {
transition: 3s all;
}
</style>
<body>
<div id="app">
<button @click="run">按钮</button>
<transition name="fade">
<div id="box" v-show="show"></div>
</transition>
</div>
<script src="../vue.js"></script>
<script>
new Vue({
el: "#app",
data: {
show: true,
},
methods: {
run: function() {
if (this.show) {
this.show = false
} else {
this.show = true
}
}
}
})
</script>
</body>
</html>
案例3
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<style>
#box {
width: 100px;
height: 100px;
background-color: red;
}
.bounce-enter-active {
animation: bounce-in .5s;
}
.bounce-leave-to {
animation: bounce-out .5s;
}
@keyframes bounce-in {
0% {
transform: scale(0)
}
50% {
transform: scale(1.5)
}
100% {
transform: scale(1)
}
}
@keyframes bounce-out {
0% {
transform: scale(1)
}
50% {
transform: scale(1.5)
}
100% {
transform: scale(0)
}
}
</style>
<body>
<div id="app">
<button @click="run">按钮</button>
<transition name="bounce">
<div id="box" v-show="show"></div>
</transition>
</div>
<script src="../vue.js"></script>
<script>
new Vue({
el: "#app",
data: {
show: true,
},
methods: {
run: function() {
if (this.show) {
this.show = false
} else {
this.show = true
}
}
}
})
</script>
</body>
</html>
来源:CSDN
作者:桑丘紫言
链接:https://blog.csdn.net/weixin_39209728/article/details/104735022