Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> CSS

การทำงานกับ CSS3 3D Transform Functions

3D Transforms: ย้าย/หมุนใน 3 มิติ (X, Y, Z Axis)

3D Transforms เพิ่มแกน Z ใช้ perspective บน parent ให้ความลึก ฟังก์ชัน: rotateX/Y/Z, translateX/Y/Z, translate3d, scale3d, matrix3d

ฟังก์ชัน 3D Transform หลัก

Functionคำอธิบาย
rotateX(angle)หมุนรอบ X axis (โน้มนอน)
rotateY(angle)หมุนรอบ Y axis (โน้มตั้ง)
rotateZ(angle)หมุนรอบ Z axis (เหมือน 2D rotate)
translate3d(x,y,z)เลื่อน 3 มิติ
translateZ(z)เลื่อนแกน Z (เข้าหา/กลับจากผู้ชม)
scale3d(x,y,z)ขยาย 3 มิติ
perspective(n)กำหนดมุมมอง 3D (บน parent หรือใน transform)
matrix3d(...)Matrix 4x4 (16 ค่า) รวมทุก transform

โค้ดตัวอย่าง

<!DOCTYPE html>
<html>
<head>
  <style>
    body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
    .container { display: inline-block; width: 200px; height: 200px; border: 1px solid #CCC; margin-left: 20px; }
    .rotateX { width: 100%; height: 100%; background: rgb(52, 0, 241); transform: perspective(600px) rotateX(85deg); }
    .rotateY { width: 100%; height: 100%; background: rgb(55, 0, 255); transform: perspective(600px) rotateY(75deg); }
    .translateZ { width: 100%; height: 100%; background: rgb(55, 0, 255); transform: perspective(600px) translateZ(-200px); }
  </style>
</head>
<body>
  <h1>3D Transform Function Example</h1>
  <div class="container"><div class="rotateX"></div></div>
  <div class="container"><div class="rotateY"></div></div>
  <div class="container"><div class="translateZ"></div></div>
</body>
</html>

Perspective: จุดสำคัญของ 3D

  • perspective: 600px บน parent – ทุก child ได้ perspective เดียวกัน
  • transform: perspective(600px) rotateY(45deg) – perspective ต่อ element
  • ค่าเล็ก = มุมมองกว้าง/ดูต้องชัด (fish-eye) ค่ามาก = มุมมองแคบ/flat

Transform-style: preserve-3d

บน parent ของ 3D-transformed children ต้องมี transform-style: preserve-3d ไม่งั้น child จะแบน (flattened) บน plane ของ parent

Backface-visibility

.card { backface-visibility: hidden; } /* ซ่อนด้านหลังเมื่อพลิก */

ประยุกต์: Flip Card, Carousel, Cube, 3D UI