怎么在css中折疊外邊距?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
10年積累的做網(wǎng)站、成都網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有秭歸免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
先看一個簡單示例:
<style>
.slide1 div {
margin:10px 0;
}
</style>
<div class="slide1">
<h4>第1種外邊距折疊:兄弟元素</h4>
<p>文本上下間距10px</p>
<p>文本上下間距10px</p>
</div>

看這個例子中的兩個p標(biāo)簽,根據(jù)樣式定義:第一個p的margin-bottom和第二個p的margin-top 都是10px,那實際距離應(yīng)該等于20px才對,但是用瀏覽器查看一下可以發(fā)現(xiàn),最終的邊距是10px。 這個例子就是外邊距折疊:塊級元素的上外邊距和下外邊距有時會合并(或折疊)為一個外邊距。
分類情況
外邊距折疊有3種基本情況:
相鄰元素
父元素和第一個子元素(或者最后一個子元素,等下記得回頭思考下這里為啥是第一個或者最后一個)
空的塊級元素
先不急著記憶,首先,前文的例子中就是第一種情況--相鄰的兩個元素之間發(fā)生的外邊距折疊。
第二種和第三種情況如下:


<style>
.father {
background-color: green;
}
.child {
margin-top: 50px;
background-color: red;
height: 300px;
}
.slide3 {
margin: 10px 0;
}
</style>
<h4>第2種外邊距折疊:父元素和首個子元素</h4>
<div class="slide2 father">
<!-- 父元素是綠色 -->
<div class="slide2 child">
<!-- 子元素是紅色 -->
</div>
</div>
<h4>第3種外邊距折疊:空的塊級元素</h4>
<div class="slide3"></div>他們的圖像也分別如圖:
情況2: 子元素的外邊距會“轉(zhuǎn)移”到父元素的外面
情況3:該元素的上下外邊距會折疊
好了,到這里我們不妨來看看這幾種情況的共同點(建議畫一下他們的盒模型,我懶就不畫了-_-),可以發(fā)現(xiàn)發(fā)生外邊距折疊的共同原因:margin之間直接接觸,沒有阻隔。
如何理解直接接觸?很簡單:
第一個例子中,兩個<p>標(biāo)簽的垂直方向margin是直接接觸的;
第二個例子中,由于父元素的padding,border都為0,所以margin和它的子元素也是直接接觸的。(這個例子畫出盒模型就很好理解)
第三個例子中,空元素本身的上下邊距也是直接接觸的(padding,border也是0)
各種情況下折疊的結(jié)果
折疊后的邊距如何計算,這個可以簡單驗證下:
如果兩個外邊距都是正值,折疊后的邊距取較大的一個
如果兩個邊距一正一負(fù),折疊后的邊距為邊距之和
如果兩個邊距都為負(fù)數(shù),折疊后邊距為較小的邊距之和
如何防止外邊距折疊
前文說到,發(fā)生外邊距折疊的原因是,外邊距直接接觸,因此防止折疊的方式就是,阻隔這個直接接觸,組合的方法包括:
嵌套情況只要border padding 非0,或者有inline元素隔開,比如父元素里加一行文字也可以(可以直接在情況2嘗試)
任何借助bfc形成阻隔的方式,如浮動,display:table等(BFC不熟悉的同學(xué)先查查,我后面補上)
看完上述內(nèi)容,你們掌握怎么在css中折疊外邊距的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
分享題目:怎么在css中折疊外邊距
分享地址:http://chinadenli.net/article28/gsghjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、關(guān)鍵詞優(yōu)化、軟件開發(fā)、網(wǎng)站設(shè)計公司、網(wǎng)站改版、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)