一. 淡入淡出
<template>
<button @click="isShow = !isShow">显示/隐藏</button>
<!-- 使用内置组件transition组件 -->
<!-- 在transition 中增加一个 name属性,这个name属性增加完了一个可以在 style中写样式了 -->
<transition name="hzc">
<h2 v-if="isShow">hello world</h2>
</transition>
</template>
<script>
export default {
data() {
return {
isShow: true,
};
},
methods: {},
};
</script>
<style scoped>
/* 这个地方的hzc 是你上面定义的name属性等于 hzc, hzc后面的那些都是固定的格式进行了一个动态的拼接 */
/* 1. 效果淡入淡出,也就是慢慢的隐藏和显示 start */
.hzc-enter-from,
.hzc-leave-to {
opacity: 0; /**从默认透明度0 开始**/
}
.hzc-enter-to,
.hzc-leave-from {
opacity: 1; /**从0透明度1 开始**/
}
.hzc-enter-active,
.hzc-leave-active {
transition: opacity 2s ease;
}
/* 1. 效果淡入淡出,也就是慢慢的隐藏和显示 end */
/**
总结: class的name命名规则如下:
-- 如果我们使用的是一个没有name的transition,那么所有的class是以 v- 作为前缀的;
-- 如果我们添加了一个name属性,比如<transition name="hzc">,那么所有的class会以 hzc- 开头的
**/
</style>
实际截图:

image.png
二. animation实现动画
<template>
<div>
<button @click="isShow = !isShow">显示/隐藏</button>
</div>
<transition name="hzc">
<h2 class="title" v-if="isShow">hello world</h2>
</transition>
</template>
<script>
export default {
data() {
return {
isShow: true,
};
},
methods: {},
};
</script>
<style scoped>
.title {
display: inline-block;
}
/* 开始进入的当前状态 */
.hzc-enter-active {
animation: bounce 1s ease;
}
/* 离开时的状态 */
.hzc-leave-active {
animation: bounce 1s ease reverse;
}
@keyframes bounce {
0% {
transform: scale(0);
}
50% {
transform: scale(1.2);
}
100% {
transform: scale(1);
}
}
</style>
网友评论