邊距限制:揭開謎底
當帶有邊距的元素嵌套在另一個元素中時,父元素封裝能力會出現不一致邊距。各種CSS屬性,例如border、position:absolute、display:inline-block和overflow:auto,都會觸發父級包含子級的邊距。然而,這種行為背後的邏輯仍然難以捉摸。
最初,假設集中在邊緣崩潰。但是,W3C 規範沒有對此行為提供明確的解釋,並且在這種情況下不存在重疊邊距。儘管如此,瀏覽器始終表現出相同的行為。
這個問題的關鍵在於,常規 div 的預設行為假設邊距不包含在父級中。然而,改變此行為的所有其他 CSS 屬性都意味著應包含邊距。這種差異需要進一步檢查。
W3C 規範:真理與神秘的混合
經過進一步審查,W3C 規範確實解決了這種行為,但提供了不連貫的解釋。此規範隨意結合了「自由邊距」(超出父級邊界的邊距)和「折疊邊距」(重疊的相鄰邊距)的概念。
這種合併給開發人員帶來的問題多於答案。在這種情況下,可用邊距似乎受到溢出:auto屬性的影響,這是違反直覺的,因為溢出通常控制元素的內容而不是其邊距。
現場示範
如所提供的程式碼片段所示,現場示範生動地說明了這種奇怪的行為。帶有邊距 (h2) 的元素嵌套在具有不同 CSS 屬性的各種父元素中。結果清楚地顯示了父級包含邊距的能力如何受到看似不相關的觸發器的影響。
這個謎仍然存在,讓開發人員在嘗試破解 CSS 邊距包含背後的邏輯時摸不著頭腦。為了解決這個持續存在的謎團,可能需要進一步的研究和 W3C 的澄清。
以上是為什麼邊距限制似乎是由 CSS 中的 Overflow: Auto 控制的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!