答案是使用CSS的transform、rotate和transition或@keyframes实现卡片翻转动画。1. HTML结构包含正背面两个div;2. 父容器设置perspective创建3D空间,卡片设置transform-style: preserve-3d;3. 正背面绝对定位,背面初始rotateY(180deg)并隐藏反面;4. 通过:hover触发card的rotateY(180deg)配合transition实现平滑翻转,或用@keyframes定义动画帧,结合JavaScript触发动画类,确保视觉连贯性与交互流畅。

想让网页中的卡片元素实现翻转动画,比如像翻牌一样展示背面内容,可以通过CSS的 transform、rotate 和 @keyframes 配合完成。整个过程不难,关键是设置好3D变换环境和旋转关键帧。
先写一个简单的卡片结构,包含正面和背面两个面:
<div class="card"> <div class="card-face front">正面</div> <div class="card-face back">背面</div> </div>
CSS中要启用3D变换,必须在父容器上使用 perspective,并给卡片设置 transform-style: preserve-3d:
.card {
width: 200px;
height: 300px;
position: relative;
perspective: 1000px; /* 创建3D透视感 */
}
<p>.card-face {
width: 100%;
height: 100%;
position: absolute;
backface-visibility: hidden; /<em> 隐藏背面时不可见 </em>/
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
font-weight: bold;
}</p><p>.front {
background: #3498db;
color: white;
}</p><p>.back {
background: #e74c3c;
color: white;
transform: rotateY(180deg); /<em> 背面初始旋转180度 </em>/
}</p>通过 @keyframes 定义一个从0到180度的Y轴旋转动画:
立即学习“前端免费学习笔记(深入)”;
@keyframes cardFlip {
0% {
transform: rotateY(0deg);
}
100% {
transform: rotateY(180deg);
}
}
<p>.card:hover .front {
animation: cardFlip 0.6s forwards;
}</p><p>.card:hover .back {
animation: cardFlip 0.6s forwards;
animation-delay: 0.6s; /<em> 等正面翻完再显示背面 </em>/
}</p>上面代码会让卡片在悬停时正面翻转,背面延迟出现。但更推荐的方式是直接对整个卡片做变换,而不是分别动画两个面。
改进方案:把动画应用在包裹层:
.card-container {
width: 200px;
height: 300px;
perspective: 1000px;
}
<p>.card {
width: 100%;
height: 100%;
position: relative;
transform-style: preserve-3d;
transition: transform 0.6s ease;
}</p><p>.card:hover {
transform: rotateY(180deg);
}</p><p>.front, .back {
width: 100%;
height: 100%;
position: absolute;
backface-visibility: hidden;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
font-weight: bold;
}</p><p>.front {
background: #3498db;
color: white;
}</p><p>.back {
background: #e74c3c;
color: white;
transform: rotateY(180deg);
}</p>这种方式更简洁,无需 @keyframes,用 transition 实现平滑翻转。但如果坚持要用 @keyframes,可以这样定义:
@keyframes flipIn {
from {
transform: rotateY(0deg);
}
to {
transform: rotateY(180deg);
}
}
<p>.card.animated {
animation: flipIn 0.6s ease forwards;
}</p>然后通过JavaScript添加类触发动画:
document.querySelector('.card').addEventListener('click', function() {
this.classList.toggle('animated');
});
基本上就这些。实现卡片翻转的核心是理解3D变换机制,选对方法就能轻松做出流畅效果。
以上就是如何在CSS中制作卡片旋转动画_transform rotate @keyframes实现效果的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号