CSS -- 外邊距合并篇

一、什么是外邊距合并

處于同個BFC中的常規(guī)文檔流(浮動和絕對定位不算)的塊級元素坛缕,若之間沒有空隙或padding墓猎、border隔開,他們將發(fā)生垂直方向上的外邊距(margin)合并赚楚。

而且發(fā)生外邊距最主要原因是兩個元素的margin碰到了一起(有些博客稱為相鄰或鄰接)毙沾,一般有以下幾種情況:

  1. 父子關(guān)系的合并
    正常文本流中的父元素和子元素,若父元素沒有padding和border隔開(子元素?zé)o所謂宠页,子元素就算設(shè)置了padding/border父元素沒設(shè)置左胞,margin還是碰到一起)寇仓,他們的外邊距將發(fā)生合并。
父子外邊距合并
  1. 兄弟關(guān)系的合并
    同個BFC中烤宙,兩個正常流的兄弟元素會發(fā)生外邊距合并遍烦。
兄弟外邊距合并
  1. 元素自身的合并
    當(dāng)元素自身沒有內(nèi)容,且沒有設(shè)置border和padding時门烂,他的上下外邊距就會碰到一起乳愉,從而發(fā)生合并。
自身外部距合并

二屯远、外邊距合并規(guī)則

  1. 兩個外邊距都是正或負數(shù)時蔓姚,折疊結(jié)果是兩者絕對值之間較大的值,符號不變慨丐。
  2. 兩個外邊距一正一負時坡脐,折疊結(jié)果是兩者的相加的和。

三房揭、如何阻止外邊距合并

文章開頭我們就講了發(fā)生外邊距合并的條件:

處于同個BFC中的常規(guī)文檔流(浮動和絕對定位不算)的塊級元素备闲,若之間沒有空隙或padding、border隔開捅暴,他們將發(fā)生垂直方向上的外邊距(margin)合并恬砂。

所以要想解決外邊距合并問題,我們可以讓上面加粗的四個點隨意一個不滿足即可蓬痒,所以有以下四種解決方案(此處以解決父子關(guān)系邊距合并為例):

  1. 讓兩者處于不同BFC下:此處讓父元素變成BFC泻骤,原先父子同處于根元素這個BFC下,所以才能發(fā)生合并梧奢,當(dāng)父元素觸發(fā)了BFC后狱掂,則子元素在新的BFC下,父元素仍然在根元素的BFC下亲轨,所以不在同個BFC中趋惨,也就無所謂合并了。
父元素變成BFC解決邊距合并
  1. 讓兩者其中之一脫離常規(guī)文檔流惦蚊,可以設(shè)置浮動或者絕對定位
脫離文檔流解決邊距合并
  1. 讓兩者(此處是父元素或子元素)其中之一變成非塊級元素:因為發(fā)生margin合并的條件之一是必須是塊元素器虾,所以當(dāng)兩者隨意一個變成inline-block之后就沒法合并了(對inline元素設(shè)置margin-top和margin-bottom本身就不生效,也就沒有垂直方向上合并這么一說了)蹦锋。
變成非塊級解決margin合并
  1. 給父元素設(shè)置padding或者border分開他們的margin:
padding曾撤、border解決邊距合并

同理,解決元素自身的邊距合并也可以用上面的四種方法(實際2.3也會觸發(fā)1):

  1. 讓自身觸發(fā)BFC晕粪。
  2. 讓自身脫離文本流挤悉。
  3. 變成inline-block。
  4. 給自身設(shè)置border或padding。

對于兄弟外邊距合并装悲,一般用以下三種:

  1. 讓兩者不在同個BFC下昏鹃。
  2. 讓自身脫離文本流。
  3. 變成inline-block诀诊。

之所以少了一種洞渤,是因為即使設(shè)置了padding或border他們的margin還是會碰在一起。所以又回到開頭那句(手動滑稽臉~):

發(fā)生外邊距最主要原因是兩個元素的margin碰到了一起属瓣。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末载迄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子抡蛙,更是在濱河造成了極大的恐慌护昧,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粗截,死亡現(xiàn)場離奇詭異惋耙,居然都是意外死亡,警方通過查閱死者的電腦和手機熊昌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門绽榛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人婿屹,你說我怎么就攤上這事灭美。” “怎么了昂利?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵届腐,是天一觀的道長。 經(jīng)常有香客問我页眯,道長梯捕,這世上最難降的妖魔是什么厢呵? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任窝撵,我火速辦了婚禮夭禽,結(jié)果婚禮上鲫凶,老公的妹妹穿的比我還像新娘唐片。我一直安慰自己宛徊,他們只是感情好兼犯,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布描扯。 她就那樣靜靜地躺著映九,像睡著了一般鳍悠。 火紅的嫁衣襯著肌膚如雪哩都。 梳的紋絲不亂的頭發(fā)上魁兼,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音漠嵌,去河邊找鬼咐汞。 笑死盖呼,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的化撕。 我是一名探鬼主播几晤,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼植阴!你這毒婦竟也來了蟹瘾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤掠手,失蹤者是張志新(化名)和其女友劉穎憾朴,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惨撇,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡伊脓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了魁衙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片报腔。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖剖淀,靈堂內(nèi)的尸體忽然破棺而出纯蛾,到底是詐尸還是另有隱情,我是刑警寧澤纵隔,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布翻诉,位于F島的核電站,受9級特大地震影響捌刮,放射性物質(zhì)發(fā)生泄漏碰煌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一绅作、第九天 我趴在偏房一處隱蔽的房頂上張望芦圾。 院中可真熱鬧,春花似錦俄认、人聲如沸个少。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽夜焦。三九已至,卻和暖如春岂贩,著一層夾襖步出監(jiān)牢的瞬間茫经,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留卸伞,地道東北人褥紫。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像瞪慧,于是被迫代替她去往敵國和親髓考。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容