[英]Position Fixed Child Restricted By Position Relative Parent Container's Z-index
[英]Is position: fixed z-index relative to its parent's z-index?
我在一個相對定位的元素中有一個固定的位置元素,只要我關注的position: relative
元素不應該對position: fixed
有任何影響position: fixed
(固定元素相對於窗口定位,對嗎?)。
但是,固定元素z-index似乎是由它的父級繼承的,它的z-index不能高於其父級的z-index。
我希望我有意義嗎? 下面是我正在談論的HTML示例:
.outer { position: relative; z-index: 2; } .inner { background: #fff; left: 50px; position: fixed; top: 40px; z-index: 1000000; } .fade { background: #555; bottom: 0; left: 0; opacity: 0.5; position: fixed; right: 0; top: 0; z-index: 3; }
<div class="outer"> <div class="inner">testing testing</div> </div> <div class="fade"></div>
如果您更改以下內容:
.outer { position: relative; z-index: 4; }
然后.inner
元素出現在淡入淡出元素的前面。
我發現這種行為非常奇怪...有沒有辦法在不移動.inner
div或改變.inner
div的CSS的情況下解決這個.outer
?
以上代碼示例的小提琴:
簡而言之,是的,在給定父級的z-index
定義的情況下, position:fixed
的元素受其父級的z-index限制。
悲傷地告訴你,但你想要的是目前還不可能。 獲得所需效果的唯一方法是更改HTML或從outer
刪除z-index 。
更改HTML選項
第一個選項是將inner
外部的outer
,這看起來是這樣 。
HTML修復的第二個選項是在outer
移動fade
(甚至使用相同的CSS) - 這里的演示 。
第三種選擇是將fade
置於outer
,然后將inner
置於fade
內部,但這需要使用rgba顏色和不透明度 - 該演示可在此處找到 。
更改CSS選項
使用當前相同的HTML,您可以獲得的最接近的事情是刪除outer
的z-index - 這里是Demo 。 您可能會認為您可以簡單地將每個元素的z-index遞增2,但這不起作用,因為子元素不能具有比其父元素更高的z-index(如果設置了父元素的z-index)。
如果你考慮一下, fade
和outer
是同一水平。 你要做的就是讓fade
保持在同一水平,但也要保持在上面的水平,這是不可能的。 這就像試圖同時在建築物的兩個樓層,它無法完成。
雖然你需要的東西與這篇文章沒有直接關系,但是菲利普沃爾頓創建了一篇關於z-index和opacity對它們的影響的精彩帖子,這對於看這個問題的其他人來說可能是有用的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.