CSS Margin 坍塌

Margin坍塌

什么是 Margin 坍塌?

塊與塊之間的頂部外邊距底部外邊距有時候會被合并成這兩個外邊距的值最大的那一個鹃操,稱之為 Margin 坍塌

出現(xiàn)于哪些情況遗锣?

  • 當(dāng)兩個豎直方向上的邊距元素相遇的時候:

假設(shè)我們有一個顏色為#ff6b6bdiv位于頁面上帆阳,還有一個顏色為#4e97cddiv位于這個div的下面橱夭,htmlCSS代碼分別如下:

HTML:

<div class="module__top"></div>
<div class="module__bottom"></div>

CSS:

.module {
  display: block;
  width: 100%;
  height: 150px;
}

.module__top {
  margin-bottom: 25px;
  background-color: #f38a6d;
}

.module__bottom {
  margin-top: 50px;
  background-color: #3bbfef;
}

效果如下圖所示:

垂直方向元素坍塌問題

根據(jù)我們的直觀感覺氨距,中間這個白色的部分的高度,應(yīng)該是75px棘劣,然而運(yùn)行結(jié)果卻是50px俏让,較大的margin吞掉了較小的margin

那么當(dāng)一個margin是正數(shù)茬暇,另外一個是負(fù)數(shù)的時候呢首昔?比如:

.module__top {
  margin-bottom: -25px;
  background-color: #ff6b6b;
}

.module__bottom {
  margin-top: 50px;
  background-color: #4e97cd;
}

最終的結(jié)果就是50 + (-25) = 25px

當(dāng)兩個值都是負(fù)數(shù),比如-50px-25px糙俗,那么最終的結(jié)果是-50px

  • 父元素的margin遇見了它的第一/最后一個孩子的margin

CSS:

/* 父元素 */
div {
  margin: 15px;
}

/* 下面都是孩子元素 */
.red {
  background-color: #ff6b6b;
}

.orange {
  background-color: #ff9e2c;
}

.yellow {
  background-color: #eeee78;
}

.green {
  background-color: #4ecd9d;
}

.blue {
  background-color: #4e97cd;
}

.purple {
  background-color: #6c4ecd;
}

HTML:

<div class="red">
  <div class="orange">
    <div class="yellow">
      <div class="green">
        <div class="blue">
          <div class="purple">Collapsed</div>
        </div>
      </div>
    </div>
  </div>
</div>

<div class="padding red">
  <div class="padding orange">
    <div class="padding yellow">
      <div class="padding green">
        <div class="padding blue">
          <div class="padding purple">Not Collapsed</div>
        </div>
      </div>
    </div>
  </div>
</div>

運(yùn)行結(jié)果:

父子CSS坍塌問題

再一次勒奇,我們應(yīng)該想當(dāng)然認(rèn)為所有元素的margin加起來應(yīng)該等于父元素和孩子元素margin的總和。但是運(yùn)行結(jié)果顯示巧骚,孩子元素的margin將會被父元素的margin所覆蓋赊颠,父元素看起來就像一個大Boss。

通過給父元素添加1px padding或者border-top劈彪,就可以解決這個問題竣蹦。

如何解決 margin 坍塌問題?

一個方向上總是使用一種margin沧奴,不要混著用痘括,比如豎直方向上總是只使用margin-bottom,比如水平方向上總是只使用margin-left扼仲。

參考

Mastering margin collapsing
What You Should Know About Collapsing Margins
Single-direction margin declarations

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末远寸,一起剝皮案震驚了整個濱河市抄淑,隨后出現(xiàn)的幾起案子屠凶,更是在濱河造成了極大的恐慌,老刑警劉巖肆资,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矗愧,死亡現(xiàn)場離奇詭異,居然都是意外死亡郑原,警方通過查閱死者的電腦和手機(jī)唉韭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來犯犁,“玉大人属愤,你說我怎么就攤上這事∷嵋郏” “怎么了住诸?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵驾胆,是天一觀的道長。 經(jīng)常有香客問我贱呐,道長丧诺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任奄薇,我火速辦了婚禮驳阎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘馁蒂。我一直安慰自己呵晚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布沫屡。 她就那樣靜靜地躺著劣纲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谁鳍。 梳的紋絲不亂的頭發(fā)上癞季,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天梗摇,我揣著相機(jī)與錄音赏廓,去河邊找鬼。 笑死突勇,一個胖子當(dāng)著我的面吹牛涮因,可吹牛的內(nèi)容都是我干的废睦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼养泡,長吁一口氣:“原來是場噩夢啊……” “哼嗜湃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起澜掩,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤购披,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后肩榕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刚陡,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年株汉,在試婚紗的時候發(fā)現(xiàn)自己被綠了筐乳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡乔妈,死狀恐怖蝙云,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情路召,我是刑警寧澤勃刨,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布匀泊,位于F島的核電站,受9級特大地震影響朵你,放射性物質(zhì)發(fā)生泄漏各聘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一抡医、第九天 我趴在偏房一處隱蔽的房頂上張望躲因。 院中可真熱鬧,春花似錦忌傻、人聲如沸大脉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽镰矿。三九已至,卻和暖如春俘种,著一層夾襖步出監(jiān)牢的瞬間秤标,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工宙刘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苍姜,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓悬包,卻偏偏與公主長得像衙猪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子布近,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案垫释? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,751評論 1 92
  • 學(xué)習(xí)CSS的最佳網(wǎng)站沒有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_閱讀 1,055評論 0 1
  • 本課來自http://www.imooc.com/learn/9請不要用作商業(yè)用途。 HTML5 HTML介紹 H...
    PYLON閱讀 3,227評論 0 5
  • 一 外部式css樣式 (也可稱為外聯(lián)式)就是把css代碼寫一個單獨(dú)的外部文件中撑瞧,這個css樣式文件以“.css...
    KunMitnic閱讀 939評論 0 1
  • CSS基礎(chǔ) 本文包括CSS基礎(chǔ)知識選擇器(重要?闷!<韭臁)繼承茫船、特殊性、層疊扭屁、重要性CSS格式化排版單位和值盒模型浮動...
    廖少少閱讀 3,082評論 0 40