CSS từ A đến Z: thuộc tính z-index. Một blog tự do khác

Hình vuông màu hồng có giá trị chỉ mục z khác với giá trị tự động, tạo ra bối cảnh lớp phủ mới. Sự xuất hiện của bối cảnh lớp phủ ảnh hưởng đến cách phần tử con.

Bạn có thể thay đổi thứ tự xếp các ô con của hình vuông màu hồng. Tuy nhiên, họ chỉ mục z chỉ có ý nghĩa trong bối cảnh lớp phủ. Điều này có nghĩa là chúng ta sẽ không thể đặt hình vuông màu cam trước hình vuông màu xanh lam vì chúng ở trong các bối cảnh lớp phủ khác nhau.

Nếu chúng ta muốn các hình vuông màu xanh lam và màu cam là một phần của cùng một bối cảnh lớp phủ, chúng ta có thể biến hình vuông màu xanh lam thành con của hình vuông màu hồng. Điều này sẽ di chuyển hình vuông màu xanh phía sau hình màu cam.






https://codepen.io/ivhed/pen/erGoJE

Bối cảnh lớp phủ được tạo không chỉ bằng cách áp dụng thuộc tính z-index. Có một số thuộc tính khác khiến các phần tử tạo ra bối cảnh lớp phủ. Một số ví dụ: bộ lọc, độ mờ và biến đổi.

Hãy quay lại ví dụ trước của chúng tôi. Hình vuông màu xanh lại gắn liền với màu hồng. Lần này, thay vì thêm thuộc tính chỉ mục z vào hình vuông màu hồng, chúng ta sẽ áp dụng bộ lọc cho thuộc tính đó.





Xanh lam, .hồng, .cam (
vị trí: tuyệt đối;
) .hồng (
bộ lọc: xoay màu sắc (20deg);
) .màu xanh da trời (
chỉ số z: 2;
) .quả cam (
chỉ số z: 3;
) .màu xanh lá (
chỉ số z: 100;
}

https://codepen.io/ivhed/pen/LmWMQb

Hình vuông màu cam vẫn có chỉ số z cao hơn hình vuông màu xanh nhưng vẫn xuất hiện phía sau. Điều này là do giá trị bộ lọc khiến hình vuông màu hồng tạo bối cảnh lớp phủ mới.

Bản tóm tắt

Bằng cách sử dụng chỉ mục z trên các phần tử được định vị, chúng ta có thể thay đổi thứ tự xếp chồng mặc định của các phần tử.

Khi áp dụng một số thuộc tính CSS nhất định, một phần tử có thể tạo thành ngữ cảnh lớp phủ. Giá trị chỉ mục Z chỉ có ý nghĩa trong cùng ngữ cảnh lớp phủ.

Để có được thông tin thêm về cách hoạt động của thuộc tính z-index, tôi khuyên bạn nên đọc bài viết này. Cô ấy chính là người đã truyền cảm hứng cho tôi khi thực hiện ấn phẩm này.

Kiểm soát thuộc tính z-index thứ tự ứng dụng các phần tử được định vị khi chúng chồng lên nhau. Thuộc tính chấp nhận các giá trị nguyên dương và âm.

Trong một luồng thông thường, các phần tử vị trí: tĩnh được đặt tuần tự lần lượt theo thứ tự chúng được xác định trong tài liệu html. Mặc định là z-index: auto; .


Cơm. 1. Định vị các phần tử dọc theo trục Z

Thuộc tính z-index chỉ định thứ tự các phần tử dọc theo trục Z Thông thường, các phần tử có giá trị chỉ mục cao sẽ chồng lên các phần tử có giá trị thấp hơn và giá trị tự động, đặt chúng ở phía trước.


Cơm. 2. Tác động của thuộc tính z-index lên các phần tử được định vị

Bối cảnh lớp phủ

Nếu thuộc tính z-index và vị trí không được đặt rõ ràng cho các phần tử thì bối cảnh lớp phủ sẽ bằng thứ tự chúng xuất hiện trong mã nguồn. Nếu các phần tử không được chỉ định chỉ mục z, trình duyệt sẽ hiển thị các phần tử trên trang theo thứ tự sau:

Phần tử gốc

Các phần tử được định vị theo thứ tự chúng xuất hiện trong mã nguồn. Cái cuối cùng sẽ được đặt ở phía trước.




Cơm. 3. Thứ tự mặc định của các phần tử trong không gian 3D

Lorem ipsum dolor sit amet, consectetur adipiscing elit...

Như có thể thấy trong hình, một phần tử có vị trí: tuyệt đối; ở phía trước, theo sau là văn bản, bên dưới là các phần tử nổi với float: left; , các phần tử khối không được định vị sẽ được đặt ở chế độ nền (vì các phần tử nổi và định vị bị xóa khỏi luồng, các phần tử không được định vị ở cấp độ khối sẽ bỏ qua chúng và được đặt lần lượt theo đánh dấu, do đó phần tử

nằm dưới phần tử
) .

Thuộc tính z-index tạo bối cảnh lớp phủ mới. Nó cho phép bạn thay đổi thứ tự xếp chồng phần tử định vị. Các phần tử sẽ được hiển thị trên trang theo thứ tự sau (nếu chúng không được đặt thành các thuộc tính ảnh hưởng đến bối cảnh lớp phủ - opacity , filter , Transform):

Phần tử gốc , chứa tất cả các thành phần của một trang web.

Các phần tử được định vị có giá trị chỉ mục z âm.

Khối các phần tử, không nổi hoặc định vị.

Phao nổi không phải là các phần tử được định vị theo thứ tự chúng xuất hiện trong mã nguồn.

Các phần tử không được định vị nội tuyến (văn bản, hình ảnh).

Các phần tử được định vị có giá trị chỉ mục z: 0; và chỉ mục z: tự động; .

Các phần tử được định vị có giá trị chỉ số z dương. Giá trị chỉ mục cao sẽ hiển thị phần tử ở nền trước. Các phần tử có giá trị z-index bằng nhau sẽ được hiển thị theo vị trí của chúng trong mã nguồn.


Cơm. 4. Thuộc tính z-index tạo bối cảnh mới để xếp chồng các phần tử trong không gian 3D

Hầu hết các thuộc tính CSS đều khá dễ sử dụng. Thông thường, việc áp dụng thuộc tính CSS cho một thành phần trong đánh dấu của bạn sẽ mang lại kết quả ngay lập tức—ngay khi bạn làm mới trang, tập hợp giá trị của thuộc tính sẽ được áp dụng và bạn sẽ thấy ngay kết quả. Tuy nhiên, các thuộc tính CSS khác phức tạp hơn và sẽ chỉ hoạt động sau khi đặt một bộ điều kiện cụ thể.

Thuộc tính z-index thuộc nhóm thuộc tính cuối cùng. Thuộc tính này đã gây ra sự nhầm lẫn và thất vọng trên diện rộng thường xuyên hơn bất kỳ thuộc tính CSS nào khác đang tồn tại. Tuy nhiên, trớ trêu thay, khi bạn biết chỉ số z, bạn sẽ nhận ra rằng thuộc tính này rất đơn giản và cung cấp một phương pháp hiệu quả để giải quyết nhiều vấn đề về bố cục.

Trong bài viết này, bạn sẽ tìm hiểu z-index là gì, nó có thể bị hiểu sai như thế nào và một số ví dụ về cách sử dụng nó. Ngoài ra, bạn sẽ tìm hiểu một số khác biệt trong hành vi của trình duyệt khi xử lý thuộc tính z-index, chủ yếu ảnh hưởng đến các phiên bản trước của Internet Explorer và Firefox. Tổng quan chi tiết về chỉ số z này sẽ cung cấp cho các nhà phát triển một nền tảng tuyệt vời để sử dụng thuộc tính này một cách tự tin và hiệu quả.

Nó là gì?

Tài sản chỉ số z xác định mức ngăn xếp của một phần tử HTML. "Mức ngăn xếp" đề cập đến vị trí của một phần tử trên trục Z (vuông góc với trục X hoặc trục Y). Phần tử được gán giá trị chỉ số z cao nhất sẽ được đặt ở vị trí cao nhất của ngăn xếp lớp. Chồng lớp này được đặt vuông góc với màn hình hoặc khu vực xem.

Chế độ xem 3D của trục Z:

Để chứng minh nó hoạt động như thế nào chỉ số z, hình trên phóng to một chút phần hiển thị của các phần tử ngăn xếp so với khung nhìn.

Thứ tự ngăn xếp thông thường

Trên trang HTML, thứ tự ngăn xếp thông thường (nghĩa là thứ tự các phần tử trên trục Z) được xác định bởi một số yếu tố. Sau đây là danh sách hiển thị thứ tự các phần tử được xếp chồng lên nhau, bắt đầu từ dưới cùng. Không có phần tử nào trong danh sách này được gán thuộc tính z-index:

  • Nền và đường viền của phần tử tạo bối cảnh ngăn xếp
  • Các phần tử có bối cảnh ngăn xếp phủ định, theo thứ tự xuất hiện
  • Các phần tử khối không được định vị, không nổi, theo thứ tự xuất hiện
  • Không được định vị, các phần tử nổi, theo thứ tự xuất hiện
  • Các phần tử nội tuyến, theo thứ tự xuất hiện
  • Các phần tử được định vị theo thứ tự xuất hiện

Khi thuộc tính z-index được sử dụng đúng cách, nó có thể thay đổi thứ tự ngăn xếp thông thường.

Tất nhiên, thứ tự của các phần tử trong ngăn xếp không rõ ràng miễn là các phần tử được đặt chồng lên nhau. Do đó, để xem thứ tự ngăn xếp thông thường, người ta có thể sử dụng lề âm như dưới đây:

Khối màu xám

Khối màu xanh

Khối màu nâu

Các khối hiển thị ở trên được gán các màu nền và đường viền khác nhau và hai khối cuối cùng được gán phần đệm âm trên cùng để minh họa thứ tự xếp chồng thông thường. Khối màu xám xuất hiện đầu tiên trong bố cục, khối màu xanh lam thứ hai và khối màu nâu thứ ba. Tỷ suất lợi nhuận âm được chỉ định chứng minh thực tế này một cách hoàn hảo. Các phần tử này không có giá trị được gán chỉ số z, chúng được đặt trên trang theo thứ tự thông thường hoặc theo mặc định. Chúng chồng lên nhau nhờ tỷ suất lợi nhuận âm.

Tại sao có sự nhầm lẫn?

Mặc dù z-index không phải là một thuộc tính khó hiểu nhưng nếu hiểu sai, nó có thể gây nhầm lẫn cho các nhà phát triển mới làm quen. Quan niệm sai lầm này xảy ra do thuộc tính z-index sẽ chỉ hoạt động trên một phần tử có thuộc tính vị trí được đặt thành một trong ba giá trị: tuyệt đối, đã sửa hoặc liên quan đến.

Để chứng minh rằng z-index chỉ hoạt động trên các phần tử được định vị, đây là ba khối giống nhau, cùng với các giá trị z-index được áp dụng để thay đổi thứ tự lớp thông thường:

Khối màu xám

Khối màu xanh

Khối màu nâu

Khối màu xám có giá trị chỉ mục z được đặt thành “9999”; khối màu xanh lam có giá trị chỉ mục z được đặt thành “500”; và khối màu nâu, giá trị chỉ số z được đặt thành “1”. Sẽ là hợp lý khi giả định rằng thứ tự các khối được xếp chồng lên nhau sẽ thay đổi. Nhưng điều này đã không xảy ra trong ví dụ này vì không có phần tử nào trong số này được gán thuộc tính vị trí cho chúng.

Dưới đây là các khối giống nhau, nhưng có thuộc tính vị trí: tương đối được thêm vào mỗi khối và thuộc tính z-index đã được gán trước đó:

Khối màu xám

Khối màu xanh

Khối màu nâu

Bây giờ, chúng ta đã nhận được kết quả như mong muốn: Thứ tự của các phần tử đã thay đổi; khối màu xám chồng lên màu xanh lam và khối màu xanh lam lần lượt chồng lên màu nâu.

Cú pháp

Thuộc tính z-index có thể ảnh hưởng đến thứ tự lớp của cả phần tử khối và phần tử nội tuyến và được đặt bằng cách gán giá trị dương hoặc âm, số nguyên hoặc tự động. Giá trị auto cung cấp cho phần tử thứ tự lớp giống như phần tử cha của nó.

Mã CSS cho ví dụ thứ ba trông như thế này, trong đó thuộc tính z-index được áp dụng chính xác:

#grey_box ( chiều rộng: 200px; chiều cao: 200px; đường viền: rắn 1px #ccc; nền: #ddd; vị trí: tương đối; chỉ mục z: 9999; ) #blue_box ( chiều rộng: 200px; chiều cao: 200px; đường viền: rắn 1px # 4a7497; nền: #8daac3; vị trí: tương đối; chỉ mục z: 500; ) #gold_box ( chiều rộng: 200px; chiều cao: 200px; đường viền: rắn 1px #8b6125; vị trí: tương đối; chỉ mục z: 1 ; )

Một lần nữa, cần nhắc lại một lần nữa, đặc biệt đối với các nhà phát triển mới vào nghề, thuộc tính z-index sẽ không hoạt động cho đến khi bạn áp dụng định vị cho phần tử.

Sử dụng JavaScript

Nếu bạn muốn tự động thay đổi giá trị z-index của một phần tử bằng JavaScript thì khá đơn giản. Cú pháp tương tự như để truy cập hầu hết các thuộc tính CSS, chỉ cần thay thế các thuộc tính CSS có dấu gạch nối bằng mã như dưới đây:

Var myElement = document.getElementById("gold_box"); myElement.style.position = "tương đối"; myElement.style.zIndex = "9999";

Như trong ví dụ, thuộc tính CSS "z-index" được viết là "zIndex". Tương tự, "background-color" trở thành "backgroundColor", "font-weight" trở thành "fontWeight", v.v.

Ngoài ra, bằng cách sử dụng đoạn mã trên, thuộc tính vị trí sẽ bị thay đổi vì chỉ mục z sẽ chỉ hoạt động trên phần tử được định vị.

Xử lý không chính xác trong IE và Firefox

Trong một số trường hợp nhất định, một số trình duyệt có thể xử lý thuộc tính z-index khác nhau, bao gồm Internet Explorer phiên bản 6 và 7 cũng như Firefox phiên bản 2.

Yếu tố luôn xuất hiện ở trên cùng theo thứ tự lớp, phá vỡ trật tự thông thường, giá trị định vị hoặc chỉ mục z. Vấn đề này được minh họa trong hình dưới đây:

Yếu tố , đó là điều xảy ra trong tất cả các trình duyệt hiện tại ngoại trừ IE6:

– Chọn năm – 2009 2010 2011

Khối màu nâu

Nếu bạn nhìn vào ví dụ này, sử dụng trình duyệt IE6, bạn sẽ thấy phần tử . Có hai giải pháp cho vấn đề này. Đầu tiên là tạm thời ẩn phần tử bằng JavaScript , trong trình duyệt trình duyệt web IE cho đến phiên bản 6.0, nó luôn được hiển thị trên các phần tử khác, bất kể giá trị chỉ mục z.

Các phiên bản Internet Explorer lên đến 7.0 tự động hiểu là 0.

TRONG Trình duyệt Firefox cho đến và bao gồm cả phiên bản 2.0, giá trị chỉ mục z âm sẽ định vị phần tử bên dưới nền trang web và nội dung của nó.

Sự chỉ rõ

Mỗi thông số kỹ thuật đều trải qua nhiều giai đoạn phê duyệt.

  • Khuyến nghị - Thông số kỹ thuật đã được W3C phê duyệt và được khuyến nghị làm tiêu chuẩn.
  • Đề xuất ứng viên ( Khuyến nghị có thể ) - nhóm chịu trách nhiệm về tiêu chuẩn hài lòng vì đã đáp ứng được mục tiêu của mình nhưng cần có sự trợ giúp từ cộng đồng phát triển để thực hiện tiêu chuẩn.
  • Khuyến nghị đề xuất Khuyến nghị được đề xuất) - ở giai đoạn này, tài liệu được gửi tới Hội đồng tư vấn của W3C để phê duyệt lần cuối.
  • Bản dự thảo đang hoạt động - Một phiên bản hoàn thiện hơn của bản dự thảo đã được thảo luận và sửa đổi để cộng đồng xem xét.
  • Bản thảo của người biên tập ( bản thảo biên tập) - phiên bản dự thảo của tiêu chuẩn sau khi các biên tập viên dự án thực hiện các thay đổi.
  • Bản nháp ( Thông số kỹ thuật dự thảo) - phiên bản dự thảo đầu tiên của tiêu chuẩn.
×