<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>Vue-CSS动画效果</title>
<script src="./code/vue.js"></script>
<style>
/* 2.然后写 .fade-enter和.fade-enter-active的样式
在Vue中会在包裹了transition的元素添加过渡动画。并且在动画的第一帧添加
.fade-enter和.fade-enter-active类。
所以例子中 。fade-enter将opacity设置成0。当动画运行到第二帧的时候
会将fade-enter类去掉。这时候opacity的值会变回默认值1。
这时候.fade-enter-active中的transition检测到了opacity的变化。
就将此变化改成3秒完成。 */
.fade-enter {
opacity: 0;
}
.fade-enter-active {
transition: opacity 3s;
}
/* 3.同样这里原理差不多,就是在元素隐藏的第一帧是有一个.fade-leave和.fade-leave-active的样式
该样式的opacity的默认值是1。在动画第二帧,会添加上.fade-leave-to的样式。这时候opacity的样式被设置为0
这时候.fade-leave-active中的transition检测到了opacity的变化。于是将此变化过渡为3秒。 */
.fade-leave-to {
opacity: 0;
}
.fade-leave-active {
transition: opacity 3s;
}
/* 4.也可以简写成这样。并且如果没有给transition标签设置name的值。
则相关的样式名字均使用v-enter, v-enter-active以此类推。 */
/* .fade-enter,
.fade-leave-to {
opacity: 0;
}
.fade-enter-active,
.fade-leave-active {
transition: opacity 1s;
} */
</style>
</head>
<body>
<div id="app">
<!-- 1.需要添加动画效果需要给所响应的元素包裹<transition></transition>元素 -->
<transition name="fade">
<!-- 5.这里用v-if,v-show都行。或者动态组件也行。 -->
<div v-if="show">Hello World</div>
</transition>
<button @click="handleClick">点我</button>
</div>
</body>
<script>
var vm = new Vue({
el: '#app',
data: {
show: true
},
methods: {
handleClick: function() {
this.show = this.show ? false : true
}
}
})
</script>
</html>