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

Cách đặt phối cảnh 3D (perspective) cho phần tử bằng JavaScript

Thuộc tính perspective xác định khoảng cách từ người xem đến mặt phẳng z=0, tạo hiệu ứng độ sâu cho các phần tử con được biến đổi 3D. Giá trị càng nhỏ → hiệu ứng 3D càng mạnh (gần mắt hơn).

Ví dụ minh họa

Mã sau thay đổi perspective của container từ 100px sang 90px khi nhấn nút:

<!DOCTYPE html>
<html>
<head>
  <style>
    #div1 {
      position: relative;
      margin: auto;
      height: 200px;
      width: 200px;
      padding: 20px;
      border: 2px solid blue;
      perspective: 100px; /* Perspective ban đầu */
    }
    #div2 {
      padding: 80px;
      position: absolute;
      border: 2px solid blue;
      background-color: yellow;
      transform: rotateX(45deg);
    }
    #div3 {
      padding: 50px;
      position: absolute;
      border: 2px solid blue;
      background-color: green;
      transform: rotateX(30deg);
    }
  </style>
</head>
<body>
  <p>Thay đổi perspective của div1</p>
  <button onclick="setPerspective()">Đặt Perspective</button>
  <div id="div1">DIV1
    <div id="div2">DIV2</div>
    <div id="div3">DIV3</div>
  </div>
  <script>
    function setPerspective() {
      document.getElementById("div1").style.perspective = "90px";
      /* Giảm perspective -> hiệu ứng 3D mạnh hơn (gần mắt hơn) */
    }
  </script>
</body>
</html>

Giá trị perspective

  • none (mặc định): Không có phối cảnh, biến đổi 3D phẳng.
  • <length>: Khoảng cách (px, em, rem...). Ví dụ: 500px, 1000px. Giá trị nhỏ = góc nhìn rộng = hiệu ứng 3D mạnh.

perspective vs perspective() transform function

  • perspective (thuộc tính CSS): Đặt trên **phần tử cha** để ảnh hưởng đến **tất cả con** được transform 3D.
  • transform: perspective(500px): Đặt trên **chính phần tử con**, chỉ ảnh hưởng đến nó.

Mẹo: Kết hợp với perspectiveOrigin để đổi điểm nhìn (vanishing point). Mặc định là 50% 50% (trung tâm).