邊距合并和BFC

首先明確邊距合并是個什么問題。
舉例說明:


什么叫邊距合并

總結(jié)邊距合并的三種情況(上圖都已經(jīng)有體現(xiàn)了):

  • 當子元素和父元素垂直之間沒有padding、沒有border也沒有內(nèi)容時就會發(fā)生外邊距合并,總體外邊距變?yōu)閮蓚€外邊距中的較大者
  • 相鄰兄弟元素的垂直上下之間也會出現(xiàn)外邊距合并;
  • 一個元素內(nèi)部沒有內(nèi)容、沒有border、也沒有padding會發(fā)生外邊距合并;

題外話:為什么發(fā)生邊距合并?

首先要明白html最初設(shè)計目的是和一個文本文檔一樣,默認也是大家在里面寫文章放圖片,那么自然要換行,所以這個margin就是控制行間距的。自然很多情況下要智能地邊距合并才能符合使用者的本意。所以不要怪罪瀏覽器的解析方式。

不感興趣的就只看這句話:邊距合并是個排版問題。

好了,重點是怎么解決邊距合并問題。
比較通用的方法是使用BFC。解釋一下BFC是啥:
BFC是塊級元素自身形成獨立的上下文排版的方式,形成BFC后外部floating、clear這些排版就失效了,BFC內(nèi)部自己形成一個內(nèi)部空間
形成BFC的方式,為了防止誤解直接給出MDN上的原文:

A block formatting context is created by one of the following:

  1. the root element or something that contains it
  2. floats (elements where float is not none)
  3. absolutely positioned elements (elements where position is absolute or fixed)
  4. inline-blocks (elements with display: inline-block)
  5. table cells (elements with display: table-cell, which is the default for HTML table cells)
  6. table captions (elements with display: table-caption, which is the default for HTML table captions)
  7. elements where overflow has a value other than visible
  8. flex boxes (elements with display: flex or inline-flex)

言歸正傳,我們解決邊距合并問題不是用上面隨便一條形成bfc就可以的。比如第1條,稍微思考一下就知道和解決我們的問題沒關(guān)系。靠譜的是我們利用overflow設(shè)置一個屬性(當然不能設(shè)置visiable上面已經(jīng)說了)。
要說明三個重要問題:

  • 是父元素形成BFC才起作用,BFC外部和內(nèi)部的排版時隔絕的,也就是我們要解決的排版問題
  • BFC不是專門用來解決邊距合并的,自然會有副作用,還要自己思考最佳解決方案
  • 有的時候想一下到底是要margin還是padding
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽?zāi)J的外補...
    _Yfling閱讀 14,090評論 1 92
  • 一,浮動元素有什么特征?對父容器、其他浮動元素、普通元素、文字分別有什么影響? 浮動模型是一種可視化格式模型,浮動...
    DeeJay_Y閱讀 992評論 0 4
  • 一、在什么場景下會出現(xiàn)外邊距合并?如何合并?如何不讓相鄰元素外邊距合并?給個父子外邊距合并的范例 1、外邊距和并的...
    鴻鵠飛天閱讀 818評論 0 0
  • 1. 浮動元素有什么特征?對父容器、其他浮動元素、普通元素、文字分別有什么影響? 浮動元素特征:使元素脫離文檔流,...
    蕭雪圣閱讀 227評論 0 1
  • 1. 在什么場景下會出現(xiàn)外邊距合并?如何合并?如何不讓相鄰元素外邊距合并?給個父子外邊距合并的范例 外邊距合并:外...
    進擊的阿群閱讀 1,093評論 1 2

友情鏈接更多精彩內(nèi)容