Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> CSS

Tạo hộp lật (Flip Box/Card) với CSS 3D Transform

Flip box là hiệu ứng xoay 3D hiển thị mặt trước/mặt sau khi hover. Sử dụng transform-style: preserve-3d và backface-visibility: hidden.

Ví dụ mã nguồn

<!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; /* Tạo chiều sâu 3D */
  }
  .innerCard {
    position: relative;
    width: 100%;
    height: 100%;
    text-align: center;
    transition: transform 0.6s;
    transform-style: preserve-3d; /* Giữ 3D cho con */
    box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
  }
  .flipCard:hover .innerCard {
    transform: rotateY(180deg); /* Xoay 180 độ khi hover */
  }
  .frontCard, .cardBack {
    position: absolute;
    width: 100%;
    height: 100%;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden; /* Ẩn mặt sau khi xoay */
  }
  .frontCard {
    background-color: rgb(124, 225, 243);
    color: black;
  }
  .cardBack {
    background-color: #3329b9;
    color: white;
    transform: rotateY(180deg); /* Mặt sau xoay sẵn 180 độ */
    font-size: 18px;
    font-weight: bold;
  }
</style>
</head>
<body>
<h1>Flip box example</h1>
<div class="flipCard">
  <div class="innerCard">
    <div class="frontCard"><h1>Mặt trước</h1></div>
    <div class="cardBack"><h1>Mặt sau</h1></div>
  </div>
</div>
<h2>Di chuột qua thẻ để thấy mặt sau</h2>
</body>
</html>

Các khái niệm then chốt

  • perspective - Trên container cha, tạo hiệu ứng chiều sâu (px càng nhỏ = góc nhìn càng rộng)
  • transform-style: preserve-3d - Cho phép con giữ không gian 3D
  • backface-visibility: hidden - Ẩn mặt sau khi xoay > 90 độ
  • rotateY(180deg) - Xoay quanh trục Y (dọc)

Các biến thể

  • Flip X: Dùng rotateX(180deg) - lật dọc
  • Click để lật: Thêm class qua JavaScript thay vì :hover
  • 3D Cube: 6 mặt xoay thành hình lập phương