Trong nhiều trường hợp, một yếu tố phải được định vị z-indexđể làm việc.
Thật vậy, áp dụng position: relativecho các yếu tố trong câu hỏi có thể sẽ giải quyết vấn đề (nhưng không có đủ mã được cung cấp để biết chắc chắn).
Trên thực tế, position: fixed, position: absolutevà position: stickycũng sẽ cho phép z-index, nhưng những giá trị cũng thay đổi bố cục. Với position: relativebố cục không bị xáo trộn.
Về cơ bản, miễn là phần tử không position: static(cài đặt mặc định), nó được coi là định vị và z-indexsẽ hoạt động.
Nhiều câu trả lời cho "Tại sao z-index không hoạt động?" câu hỏi khẳng định rằng z-index chỉ hoạt động trên các yếu tố định vị. Kể từ CSS3, điều này không còn đúng nữa.
Các yếu tố là vật phẩm flex hoặc vật phẩm lưới có thể sử dụng z-indexngay cả khi positioncó static.
Từ thông số kỹ thuật:
4.3. Đặt hàng linh hoạt Z
Các mục Flex vẽ chính xác giống như các khối nội tuyến, ngoại trừ thứ tự tài liệu được sửa đổi theo thứ tự được sử dụng thay cho thứ tự tài liệu thô và z-indexcác giá trị khác ngoài việc autotạo bối cảnh xếp chồng ngay cả khi positioncó static.
5.4. Đặt hàng trục Z: thuộc z-indextính
Thứ tự vẽ của các mục lưới hoàn toàn giống với các khối nội tuyến, ngoại trừ thứ tự tài liệu được sửa đổi thứ tự được sử dụng thay cho thứ tự tài liệu thô và z-indexcác giá trị khác ngoài việc autotạo bối cảnh xếp chồng ngay cả khi
positioncó static.
Dưới đây là một minh chứng về cách z-indexlàm việc trên các mục flex không định vị: https://jsfiddle.net/m0wddwxs/
Stacking Context.