首頁  >  文章  >  web前端  >  為什麼絕對定位繼承自嵌套 Div 中的直接父級?

為什麼絕對定位繼承自嵌套 Div 中的直接父級?

Susan Sarandon
Susan Sarandon原創
2024-10-31 21:22:02562瀏覽

 Why Does Absolute Positioning Inherit From the Immediate Parent in Nested Divs?

Absolute絕對定位異常

在涉及絕對定位的多層佈局中,經常會遇到內層div有絕對定位的場景相對於其直接父級的定位,此父級也絕對定位在另一個div 中。然而,在這樣的設定中,內部 div 從其直接父級繼承其絕對位置,導致看似意外的行為。

考慮以下 HTML 結構:

<code class="html"><div id="1st" style="position: relative;">
  <div id="2nd" style="position: absolute;">
    <div id="3rd" style="position: absolute;"></div>
  </div>
</div></code>

直觀地說,一個期望 #3rd 的位置是相對於 #1st 的絕對位置,因為 #2nd 絕對位於 #1st 內。然而,現實情況是#3rd 的絕對定位繼承自#2nd。這是因為#2nd 上的position:absolute 重置了其相對於其父級的位置,導致#3rd 絕對定位在#2nd 內。

此行為可歸因於CSS 特異性規則。當子元素具有絕對位置時,其位置由其直接父元素的邊界框決定。在這種情況下,#3rd 的位置由 #2nd 的邊界框定義,並且不知道 #2nd 相對於 #1st 的絕對位置。

解決此問題並使 #3rd 絕對定位相對於#1st,有必要使#3rd 成為#1st 的直接子級。換句話說,以下HTML 將產生所需的行為:

<code class="html"><div id="1st" style="position: relative;">
  <div id="3rd" style="position: absolute;"></div>
</div></code>

在這種情況下,#3rd 的絕對位置由其父級#1st 的位置決定,這正是人們所期望的。需要注意的是,透過position:absolute重置父元素的位置也會影響其子元素的位置,除非它們相對於不同的父元素是絕對定位的。

以上是為什麼絕對定位繼承自嵌套 Div 中的直接父級?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn