3D Flip Card: โชว์หน้า-หลังเมื่อ Hover ด้วย CSS 3D Transform
สร้างการ์ดที่พลิก 180 องศาแกน Y เมื่อ hover ใช้ transform-style: preserve-3d, backface-visibility: hidden และ transform: rotateY(180deg)
โค้ดตัวอย่าง
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; margin:20px; }
.flipCard {
background-color: transparent;
width: 300px; height: 300px;
perspective: 1000px; /* ความลึก 3D */
}
.innerCard {
position: relative;
width: 100%; height: 100%;
text-align: center;
transition: transform 0.6s;
transform-style: preserve-3d;
box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
}
.flipCard:hover .innerCard { transform: rotateY(180deg); }
.frontCard, .cardBack {
position: absolute; width: 100%; height: 100%;
backface-visibility: hidden;
}
.frontCard { background-color: rgb(124, 225, 243); color: black; }
.cardBack {
background-color: #3329b9; color: white;
transform: rotateY(180deg); /* เริ่มต้นพลิกหลังอยู่แล้ว */
font-size: 18px; font-weight: bold;
}
</style>
</head>
<body>
<h1>ตัวอย่าง Flip Box</h1>
<div class="flipCard">
<div class="innerCard">
<div class="frontCard"><h1>หน้าหน้า</h1></div>
<div class="cardBack"><h1>หลังการ์ด</h1></div>
</div>
</div>
<h2>Hover บนการ์ดเพื่อดูด้านหลัง</h2>
</body>
</html>
หลักการทำงาน
perspective: 1000pxบน parent – ให้ความลึก 3Dtransform-style: preserve-3dบน inner – รักษา 3D ของลูกbackface-visibility: hidden– ซ่อนด้านหลังเมื่อพลิก
4.
transition: transform 0.6s – ทำให้พลิกนุ่มนวล
ประยุกต์ใช้
- Product card: หน้ารูปสินค้า, หลังรายละเอียด/ราคา
- Profile card: หน้ารูป/ชื่อ, หลัง bio/social links
- Quiz/Flashcard: หน้าคำถาม, หลังคำตอบ
หมายเหตุ: บนมือถือไม่มี hover – ควรเพิ่ม onclick toggle class หรือใช้ @media (hover: hover) จำกัดเฉพาะอุปกรณ์ที่มี hover