要点
滚动动画包含两种变化:
(1)位置变化
transform: translate(-100%);
(2)沿z轴(垂直于屏幕方向)旋转
transform: rotate3d(0, 0, 1, -360deg);
完整范例代码
<template>
<div>
<button @click="show = true">点我滚入</button>
<button @click="show = false">点我滚出</button>
<transition
enter-active-class="rollIn"
leave-active-class="rollOut"
>
<div v-show="show" class="circle200">滚动动画</div>
</transition>
</div>
</template>
<script>
export default {
data() {
return {
show: false
}
},
}
</script>
<style scoped>
.circle200 {
height: 200px;
width: 200px;
background: red;
border-radius: 50%;
text-align: center;
line-height: 200px;
}
/*滚入——从左侧*/
@keyframes rollIn {
0% {
opacity: 0;
transform: translate(-100%) rotate3d(0, 0, 1, -360deg);
}
100% {
opacity: 1;
}
}
/*滚出——从左侧*/
@keyframes rollOut {
0% {
opacity: 1;
}
100% {
opacity: 0;
transform: translate(-100%) rotate3d(0, 0, 1, -360deg);
}
}
/*滚入——从左侧*/
.rollIn {
animation: rollIn 1s;
}
/*滚出——从左侧*/
.rollOut {
animation: rollOut 1s;
}
</style>