為什麼Clip-Path 會修改堆疊順序:深入探討
在CSS 世界中,我們經常處理元素的堆疊順序,其中程式碼中位置較前的元素通常繪製在位於下面的元素之上。但是,某些屬性(例如 Clip-path)可能會破壞此預期的堆疊順序,從而導致意外結果。
考慮以下 CSS 程式碼:
header { background: #a00; clip-path: polygon(0 0, 100% 0, 100% calc(100% - 5em), 0 100%); }
當套用於標題 (
要理解此行為,我們必須了解與 CSS 不透明度類似的剪輯路徑,它建立了一個新的堆疊上下文。在CSS定義的繪製順序中,建立堆疊上下文的元素位於非定位元素之前。
8. All positioned, opacity or transform descendants, in tree order that fall into the following categories: - All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order. - All opacity descendants with opacity less than 1, in tree order, create a stacking context generated atomically. - All transform descendants with transform other than none, in tree order, create a stacking context generated atomically.
在我們的範例中,具有clip-path屬性的元素在步驟8中繪製,而影像缺乏任何定位,在步驟 4 中繪製。儘管出現在程式碼的後面,但由於由Clip-path。
為了修正這個問題,可以在影像上明確定義position:relative。這會定位圖像,使其被放置在與剪切標題相同的堆疊上下文中。然後,樹順序決定圖像在標題上方渲染。
img { margin-top: -10em; position:relative; }
總之,clip-path 與 CSS 不透明度一樣,建立了一個堆疊上下文,影響元素的繪製順序。透過理解這些概念,我們可以控制堆疊行為並實現所需的視覺效果。
以上是為什麼 `clip-path` 會改變 HTML 元素的堆疊順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!