vue3 + css动画实现元素翻转效果
<template>
<div class="flip-container" @click="toggle">
<div class="flipper">
<div class="front" v-show="!isFlipped">正面</div>
<div class="back" v-show="isFlipped">背面</div>
</div>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const isFlipped = ref(false);
function toggle() {
isFlipped.value = !isFlipped.value;
}
return { isFlipped, toggle };
}
};
</script>
<style scoped>
.flip-container {
perspective: 1000;
}
.flipper {
position: relative;
transition: transform 0.6s;
transform-style: preserve-3d;
}
.front, .back {
backface-visibility: hidden;
position: absolute;
inset: 0;
backface-visibility: hidden;
}
.front {
z-index: 2;
}
.back {
transform: rotateY(180deg);
}
.flip-container:hover .flipper {
transform: rotateY(180deg);
}
</style>
这个例子中,我们创建了一个可以点击翻转的容器,通过Vue的响应式数据绑定和CSS动画实现了元素的翻转效果。用户点击.flip-container
后,.flipper
的transform
属性从rotateY(0)
变为rotateY(180deg)
,从而触发CSS动画使得.front
和.back
分别显示和隐藏,实现翻转效果。
评论已关闭