在 CSS3 中,实现翻转卡片(Flip Card)通常结合 transform、transition 和 backface-visibility 来实现。下面给你一个最常见、最实用的方案。
<div class="card">
<div class="card-inner">
<div class="card-front">正面</div>
<div class="card-back">背面</div>
</div>
</div>
/* 卡片容器 */
.card {
width: 200px;
height: 260px;
perspective: 1000px; /* 3D 透视 */
}
/* 内层,用于翻转 */
.card-inner {
position: relative;
width: 100%;
height: 100%;
transition: transform 0.6s;
transform-style: preserve-3d;
}
/* 鼠标悬停翻转 */
.card:hover .card-inner {
transform: rotateY(180deg);
}
/* 正反面公共样式 */
.card-front,
.card-back {
position: absolute;
width: 100%;
height: 100%;
backface-visibility: hidden; /* 隐藏背面 */
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
color: #fff;
}
/* 正面 */
.card-front {
background: #3498db;
}
/* 背面 */
.card-back {
background: #e74c3c;
transform: rotateY(180deg);
}
perspective
给父元素加透视,形成 3D 效果
transform-style: preserve-3d
保留子元素的 3D 空间
backface-visibility: hidden
翻转后隐藏背面,避免内容重叠
rotateY(180deg)
实现左右翻转(也可用 rotateX 做上下翻转)
如果你想要点击翻转而不是 hover:
document.querySelector('.card').onclick = function () {
this.classList.toggle('flipped');
};
.card.flipped .card-inner {
transform: rotateY(180deg);
}
rotateX(180deg)如果你需要 React / Vue 版本、移动端适配 或 更炫的动画效果,告诉我我可以继续帮你写。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。