怎么在css中折疊外邊距?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
10年積累的做網(wǎng)站、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有秭歸免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
先看一個(gè)簡(jiǎn)單示例:
第1種外邊距折疊:兄弟元素
文本上下間距10px
文本上下間距10px
看這個(gè)例子中的兩個(gè)p
標(biāo)簽,根據(jù)樣式定義:第一個(gè)p
的margin-bottom
和第二個(gè)p
的margin-top
都是10px,那實(shí)際距離應(yīng)該等于20px才對(duì),但是用瀏覽器查看一下可以發(fā)現(xiàn),最終的邊距是10px
。 這個(gè)例子就是外邊距折疊:塊級(jí)元素的上外邊距和下外邊距有時(shí)會(huì)合并(或折疊)為一個(gè)外邊距。
分類情況
外邊距折疊有3種基本情況:
相鄰元素
父元素和第一個(gè)子元素(或者最后一個(gè)子元素,等下記得回頭思考下這里為啥是第一個(gè)或者最后一個(gè))
空的塊級(jí)元素
先不急著記憶,首先,前文的例子中就是第一種情況--相鄰的兩個(gè)元素之間發(fā)生的外邊距折疊。
第二種和第三種情況如下:
第2種外邊距折疊:父元素和首個(gè)子元素
第3種外邊距折疊:空的塊級(jí)元素
他們的圖像也分別如圖:
情況2: 子元素的外邊距會(huì)“轉(zhuǎn)移”到父元素的外面
情況3:該元素的上下外邊距會(huì)折疊
好了,到這里我們不妨來(lái)看看這幾種情況的共同點(diǎn)(建議畫(huà)一下他們的盒模型,我懶就不畫(huà)了-_-),可以發(fā)現(xiàn)發(fā)生外邊距折疊的共同原因:margin之間直接接觸,沒(méi)有阻隔。
如何理解直接接觸?很簡(jiǎn)單:
第一個(gè)例子中,兩個(gè)標(biāo)簽的垂直方向
margin
是直接接觸的;
第二個(gè)例子中,由于父元素的padding
,border
都為0,所以margin
和它的子元素也是直接接觸的。(這個(gè)例子畫(huà)出盒模型就很好理解)
第三個(gè)例子中,空元素本身的上下邊距也是直接接觸的(padding
,border
也是0)
各種情況下折疊的結(jié)果
折疊后的邊距如何計(jì)算,這個(gè)可以簡(jiǎn)單驗(yàn)證下:
如果兩個(gè)外邊距都是正值,折疊后的邊距取較大的一個(gè)
如果兩個(gè)邊距一正一負(fù),折疊后的邊距為邊距之和
如果兩個(gè)邊距都為負(fù)數(shù),折疊后邊距為較小的邊距之和
如何防止外邊距折疊
前文說(shuō)到,發(fā)生外邊距折疊的原因是,外邊距直接接觸,因此防止折疊的方式就是,阻隔這個(gè)直接接觸,組合的方法包括:
嵌套情況只要border padding
非0,或者有inline
元素隔開(kāi),比如父元素里加一行文字也可以(可以直接在情況2嘗試)
任何借助bfc形成阻隔的方式,如浮動(dòng),display:table
等(BFC
不熟悉的同學(xué)先查查,我后面補(bǔ)上)
看完上述內(nèi)容,你們掌握怎么在css中折疊外邊距的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!