<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script src="./vue.js"></script>
<style>
.box {
width: 100px;
height: 100px;
background-color: red;
}
.show-enter-active {
animation: ani-show 5s;
}
.show-leave-active {
animation: ani-hide 5s;
}
@keyframes ani-show {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes ani-hide {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
.enter,
.leave-to {
opacity: 0;
}
.enter-active,
.leave-active {
transition: all 3s linear;
}
.enter-to,
.leave {
opacity: 1;
}
</style>
</head>
<body>
<div id="app">
<input type="checkbox" v-model="show" /> 显示/隐藏
<hr />
<transition name="show">
<div class="box" v-show="show"></div>
</transition>
<br />
<br />
<br />
<transition
name="custom"
enter-class="enter"
enter-active-class="enter-active"
enter-to-class="enter-to"
leave-class="leave"
leave-active-class="leave-active"
leave-to-class="leave-to"
>
<div class="box" v-show="show"></div>
</transition>
</div>
<script>
// vue 动画
// 通过 css 动画实现元素的显示和隐藏
let vm = new Vue({
el: "#app",
data: {
show: true,
},
});
</script>
</body>
</html>
效果如下:
