Tôi có một hoặc nhiều thành phần vị trí cố định trên một trang hiển thị xếp chồng lên nhau (có nghĩa là, phần trên cùng của phần thứ hai là đặt phần cuối của phần đầu tiên - không có xếp hạng z-index của các phần tử đó). Bên trong phần tử vị trí cố định đầu tiên, có một phần tử được định vị hoàn toàn cao hơn so với phần tử cố định của nó, do đó nó mở rộng ra ngoài phần dưới cùng của bố mẹ cố định đó.Chỉ số Z không hoạt động như mong đợi với định vị tuyệt đối bên trong một phần tử vị trí cố định
Sự cố là phần tử vị trí cố định tiếp theo được hiển thị trên đầu phần tử được định vị hoàn toàn. Tôi đã có giá trị z-index cao hơn được đặt trên phần tử được định vị hoàn toàn hơn so với các phần tử cố định vị trí, nhưng nó bị bỏ qua hoàn toàn.
Để giúp làm sáng tỏ vấn đề, tôi đặt lại với nhau ví dụ này:
HTML
<div class="fixed first">
<p>This is a fixed element</p>
<p class="abs">
I should be displayed above both fixed position elements
</p>
</div>
<div class="fixed second">
<p>This is a fixed element</p>
</div>
CSS
.fixed {
font-size: 16px;
background: #eee;
border-bottom: 1px solid #ccc;
position: fixed;
height: 3em;
width: 100%;
z-index: 1;
}
.abs {
position: absolute;
background: #acc;
height: 6em;
top: 0;
left: 25%;
width: 50%;
z-index: 2;
}
.second {
top: 3.0625em;
}
Dưới đây là ví dụ làm việc trên JSFiddle:
Tôi là loại bối rối bởi điều này. Có ai có một lời giải thích là tại sao điều này đang xảy ra, và một cách để làm việc xung quanh nó?
[điều này có giải thích tốt về cách hoạt động của chỉ mục z] (http://coding.smashingmagazine.com/2009/09/15/the-z-index-css-property-a-comprehensive-look/) , vì bạn sẽ thấy tất cả các phần tử trên cùng cấp có chỉ mục z sẽ được ưu tiên hơn so với chỉ mục z-index của lớp con. Với điều này trong tâm trí của bạn fiddle trên là làm việc như mong đợi – Pete
Tất nhiên! Tôi quên rằng mỗi phần tử định vị tạo ra bối cảnh xếp chồng của riêng nó. Bởi vì mỗi phần tử vị trí cố định trong ví dụ có cùng giá trị z-index, thứ tự nguồn đi vào hoạt động. Cảm ơn vì lời nhắc nhở, Pete. –