今天無(wú)意中碰到了外邊距合并的問(wèn)題,于是便研究了一下。這里做個(gè)筆記。
所謂外邊距合并,指的是當(dāng)兩個(gè)垂直外邊距相遇時(shí),它們將形成一個(gè)外邊距。合并后的外邊距的高度等于兩個(gè)發(fā)生合并的外邊距的高度中的較大者。
例如,這里有這樣兩個(gè)塊元素:
<div class="box1"></div><div class="box2"></div>
這里給的樣式是:
.box1{ width:150px; height:150px; background:gray; }.box2{ width:150px; height:150px; background:lightblue; }
先來(lái)看一下效果:
意料之中的,然后給.box1一個(gè)向下的外邊距20px,結(jié)果為:
也沒(méi)啥問(wèn)題,好了,那么我再給.box2一個(gè)向上的外邊距10px,這里問(wèn)題就來(lái)了。
會(huì)發(fā)現(xiàn),這兩個(gè)元素間的間距并沒(méi)有發(fā)生變化,為什么會(huì)這樣呢?這是因?yàn)樗麄儼l(fā)生了外邊距合并,因?yàn)榈谝粋€(gè)塊元素的外邊距大于第二個(gè)塊元素的外邊距,二者間的邊距便以第一個(gè)塊元素的外邊距為準(zhǔn)。
這里我再代碼稍微改一下,變成這樣?! ?/p>
<div class="box1"> <div class="box2"></div></div>
樣式變?yōu)檫@樣?!?/p>
.box1{ width:150px; height:150px; background:lightblue; margin-top:20px; }.box2{ width:100px; height:100px; background-color: lightgreen; }
此時(shí)效果相信大家都知道了,可是如果我想讓.box2距離的的父元素有一定的上邊距該怎么辦呢?也許有人會(huì)說(shuō)很簡(jiǎn)單,我直接給它一個(gè)上外邊距(margin-top)啊,不好意思,不行,那有人會(huì)說(shuō)那我給它一個(gè)上內(nèi)填充(padding-top)呢?不好意思,還是不行,這么做只會(huì)改變?cè)撛氐母叨?,那么?yīng)該怎么做呢,其實(shí)很簡(jiǎn)單,就是給它的父元素一個(gè)上內(nèi)填充(padding-top)就行了,當(dāng)然這里它的父元素的總高度會(huì)改變,此時(shí)你就要根據(jù)具體情況來(lái)設(shè)置它的height了,具體情況具體分析。
總結(jié):
1、當(dāng)兩個(gè)垂直外邊距相遇時(shí),它們將形成一個(gè)外邊距。合并后的外邊距的高度等于兩個(gè)發(fā)生合并的外邊距的高度中的較大者。
2、只有普通文檔流中塊框的垂直外邊距才會(huì)發(fā)生外邊距合并。行內(nèi)框、浮動(dòng)框或絕對(duì)定位之間的外邊距不會(huì)合并。
3、當(dāng)一個(gè)塊元素中嵌套另一個(gè)塊元素,而想讓子塊元素距離它的父元素有一定的上邊距時(shí),可以給它的父元素一個(gè)上內(nèi)填充(padding-top)便可解決。
作者:江峰★
出處:http://www.cnblogs.com/jf-67/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文鏈接,否則保留追究法律責(zé)任的權(quán)利
http://www.cnblogs.com/jf-67/p/7220861.html