Thứ sáu, 13/12/2019 | 00:00 GMT+7

Thủ thuật sử dụng CSS translateZ () và phối cảnh ()


Trong bài viết này, bạn sẽ học cách sử dụng hàm CSS translateZ() . Theo nhiều cách, đây là một chức năng CSS độc đáo vì nó thách thức ý tưởng rằng trang web chỉ là một không gian trực quan 2D.

Thuộc tính biến đổi CSS có rất nhiều chức năng để di chuyển các HTMLElements xung quanh. Trong số đó có các hàm translateX , translateYtranslateZ .

Trong khi translateXtranslateY khá đơn giản, thì translateZ hơi khó hiểu hơn một chút.


Hãy xem lại cách translateXtranslateY hoạt động:

div#myCircle {   background-color: gray;   width: 20px;   height: 20px;   border-radius: 100%;   transform: translateX(11px) translateY(20px); } 

HTMLElement được di chuyển 11px sang bên phải và xuống 20px .

Sơ đồ minh họa bản dịch

Nó di chuyển nó dọc theo trục x và trục y. Bạn có thể nhớ những thuật ngữ này từ các lớp Toán ở trường trung học! Đoán xem hàm translateZ di chuyển theo trục nào?

Sơ đồ minh họa trục Z

Đúng rồi! Trục z. Thay vì di chuyển HTMLE nông cụ theo chiều ngang / dọc, nó sẽ di chuyển chúng đến gần bạn hơn hoặc xa bạn hơn.

Sử dụng translateZ ()

Hãy thử thêm translateZ vào đoạn mã trước:

div#myCircle {   background-color: gray;   width: 20px;   height: 20px;   border-radius: 100%;   transform: translateX(11px) translateY(20px) translateZ(75px) perspective(200px); } 

Bạn có thể đã nhận thấy một hàm CSS khác có tên là perspective() . Nó thực sự cần thiết để translateZ có hiệu lực. Đó là thông thường để quên nó vì không translateX hoặc translateY đòi hỏi nó ... Nhưng bạn gotta nhớ để sử dụng nó với translateZ !

Phối cảnh () làm gì?

Hàm phối cảnh () xác định khoảng cách ảo giữa mặt phẳng của màn hình máy tính của bạn và HTMLElement mà bạn đang áp dụng translateZ .

Điều này nghĩa là perspective(200px)translateZ(75px) tạo ra một không gian ảo 200px giữa HTMLElement và màn hình máy tính, sau đó di chuyển nó 75px lại gần bạn hơn.

Điều này làm cho HTMLElement có vẻ lớn hơn 💗

Sơ đồ minh họa dịch Z dịch tích cực

Tương tự như vậy, việc sử dụng một giá trị âm trong translateZ() sẽ di chuyển nó ra xa hơn:

div#myCircle {   background-color: gray;   width: 20px;   height: 20px;   border-radius: 100%;   transform: translateX(11px) translateY(20px) translateZ(-100px) perspective(200px); } 

Sơ đồ minh họa dịch Z dịch âm

Thời gian demo

Dưới đây là một bản demo nhỏ mà sử dụng translateZ chức năng CSS. Hãy thử di chuột qua các node !

button {   /* abridged css values */   transform: perspective(100px) translateZ(0px);   transition: transform 100ms linear; }  button:hover {   transform: perspective(100px) translateZ(5px); } 

Thật dễ dàng để tạo các hiệu ứng hình ảnh hấp dẫn bằng cách sử dụng translateZ !

Những thông tin thú vị về translateZ ()

Có một số hành vi không mong muốn với perspectivetranslateZ cần lưu ý.

  • Nếu giá trị được cung cấp cho translateZ () bằng hoặc cao hơn giá trị được cung cấp cho phối cảnh (), thì nó sẽ khiến HTMLElement biến mất. Bạn luôn có thể đặt một giá trị nhỏ hơn vô hạn trong translateZ() nhưng điều ngược lại không đúng… Khi bạn vượt quá giá trị của perspective() , phần tử sẽ không còn hiển thị nữa.
  • Áp dụng phối cảnh (0px) . Mọi giá trị cho perspective() sẽ hoạt động… trừ khi đó là giá trị 0 (như 0px , 0 , 0em ). Điều này làm cho mọi hiệu ứng translateZ() bị bỏ qua.

Kết luận

Sử dụng translateZ là bước đệm để xem các trang web như một không gian trực quan 3D… không chỉ 2D! Hy vọng rằng bạn sẽ thêm nó vào hộp công cụ của bạn và nó sẽ giúp bạn tạo ra những thiết kế hấp dẫn!

Truy cập MDN để xem tài liệu về translateZperspective 📦🔍


Tags:

Các tin liên quan

Cách hiển thị CSS trên server ứng dụng React
2019-12-12
Cách tạo Thư viện ảnh cuộn vô hạn với React và CSS Grid
2019-12-12
Cách tạo node tải xuống với các tương tác nhỏ với CSS, anime.js và segment.js
2019-12-12
Cách giải quyết tắc nghẽn CSS quy mô lớn với ITCSS và BEM
2019-12-12
Đặt, giãn cách và mật độ trong CSS Grid
2019-12-12
Hiểu tính cụ thể trong CSS
2019-09-03
CSS sẽ thay đổi Thuộc tính: Khi nào và Không sử dụng Nó
2019-08-26
Trình xử lý nhấp chuột chỉ dành cho CSS sử dụng: target Pseudo-Class (Không có JavaScript)
2019-08-22
Giới thiệu về Tailwind CSS
2019-08-13
Hiểu CSS Float
2019-06-07