首先我回顾一下上次使用的代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue中Css动画原理</title>
<script src='./vue.js'></script>
<style>
.v-enter,
.v-leave-to {
opacity: 0;
}
.v-enter-active,
.v-leave-active {
transition: opacity 3s;
;
}
</style>
</head>
<body>
<div id="root">
<transition>
<div v-if="show">hello world</div>
</transition>
<button @click="handleClick">切换</button>
</div>
<script>
var vm = new Vue({
el: '#root',
data: {
show: true
},
methods: {
handleClick: function() {
this.show = !this.show
}
},
})
</script>
</body>
</html>
接下来我们可以通过一些属性 实现动画
代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue中的使用animate.css库</title>
<script src='./vue.js'></script>
<!-- <link rel="stylesheet" type="text/css" href="./animate.css"> -->
<style>
@keyframes bounce-in {
0% {
transform: scale(0);
}
50% {
transform: scale(1.5);
}
100% {
transform: scale(1);
}
}
/* 接下来我们就可以使用这个动画了 */
/* 当div show标签显示的过程中一直存在 */
.fade-enter-active {
transform-origin: left center;
animation: bounce-in 3s;
}
/* 当div show标签不显示的过程中一直存在 */
/* 当离开的时候 我希望这个动画进行反向执行 */
/* reverse */
.fade-leave-active {
transform-origin: left center;
animation: bounce-in 1s reverse;
}
</style>
</head>
<body>
<div id="root">
<transition name="fade">
<div v-if="show">hello world</div>
</transition>
<button @click="handleClick">toggle</button>
</div>
<script>
var vm = new Vue({
el: '#root',
data: {
show: true
},
methods: {
handleClick: function() {
this.show = !this.show
}
},
})
</script>
</body>
</html>
运行效果图
思考 我们可以是否 使用不同的命名的规范?来完成不同的动画效果.
当然可以了 有何不同自行 进行代码对比
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue中的使用animate.css库</title>
<script src='./vue.js'></script>
<!-- <link rel="stylesheet" type="text/css" href="./animate.css"> -->
<style>
@keyframes bounce-in {
0% {
transform: scale(0);
}
50% {
transform: scale(1.5);
}
100% {
transform: scale(1);
}
}
/* 接下来我们就可以使用这个动画了 */
/* 当div show标签显示的过程中一直存在 */
.active {
transform-origin: left center;
animation: bounce-in 3s;
}
/* 当div show标签不显示的过程中一直存在 */
/* 当离开的时候 我希望这个动画进行反向执行 */
/* reverse */
.leave {
transform-origin: left center;
animation: bounce-in 1s reverse;
}
</style>
</head>
<body>
<div id="root">
<transition name="fade" enter-active-class="active" leave-active-class="leave">
<div v-if="show">hello world</div>
</transition>
<button @click="handleClick">toggle</button>
</div>
<script>
var vm = new Vue({
el: '#root',
data: {
show: true
},
methods: {
handleClick: function() {
this.show = !this.show
}
},
})
</script>
</body>
</html>
然后我们引入一个组件库
有了这个库 就不需要我们自己书写 这些动画代码了
注意的是
这里的划钱的地方代表不同的效果
具体代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue中的使用animate.css库</title>
<script src='./vue.js'></script>
<link rel="stylesheet" type="text/css" href="./animate.css">
</head>
<body>
<div id="root">
<transition name="fade" enter-active-class="animated swing" leave-active-class="animated shake">
<div v-if="show">hello world</div>
</transition>
<button @click="handleClick">toggle</button>
</div>
<script>
var vm = new Vue({
el: '#root',
data: {
show: true
},
methods: {
handleClick: function() {
this.show = !this.show
}
},
})
</script>
</body>
</html>