margin的塌陷現(xiàn)象
標準文檔流中,豎直方向的
margin不疊加,以較大的為準。

如果不在標準流,比如盒子都浮動了,那么兩個盒子之間是沒有塌陷現(xiàn)象的:

4.2 盒子居中margin:0 auto;
margin的值可以為auto,表示自動。當left、right兩個方向,都是auto的時候,盒子居中了:
1 margin-left: auto;
2 margin-right: auto;
簡寫為
1 margin:0 auto;
注意:
1) 使用
margin:0 auto;的盒子,必須有width,有明確的width
2) 只有標準流的盒子,才能使用margin:0 auto;居中。
也就是說,當一個盒子浮動了、絕對定位了、固定定位了,都不能使用
margin:0 auto;
3)
margin:0 auto;是在居中盒子,不是居中文本。文本的居中,要使用
text-align:center;
1 margin:0 auto; → 讓這個div自己在大容器中居中。
2 text-align: center; → 讓這個div內(nèi)部的文本居中。
text-align還有
1 text-align:left; 沒啥用,因為默認居左
2 text-align:right; 文本居右
4.3 善于使用父親的padding,而不是兒子的margin
如果父親沒有border,那么兒子的margin實際上踹的是“流”,踹的是這“行”。所以,父親整體也掉下來了
這個p有一個margin-top踹父親,試圖將自己下移
1 <div>
2 <p></p>
3 </div>
結(jié)果:


margin這個屬性,本質(zhì)上描述的是兄弟和兄弟之間的距離; 最好不要用這個marign表達父子之間的距離。
所以,我們一定要善于使用父親的padding,而不是兒子的margin。
4.4 關(guān)于margin的IE6兼容問題
IE6雙倍margin bug
當出現(xiàn)連續(xù)浮動的元素,攜帶和浮動方向相同的margin時,隊首的元素,會雙倍marign。
<ul>
<li></li>
<li></li>
<li></li>
</ul>

解決方案:
1)使浮動的方向和margin的方向,相反。所以,你就會發(fā)現(xiàn),我們特別喜歡,浮動的方向和margin的方向相反。并且,前端開發(fā)工程師,把這個當做習慣了。
float: left;
margin-right: 40px;
2)使用hack(沒必要,別慣著這個IE6)
單獨給隊首的元素,寫一個一半的margin
<li class="no1"></li>
ul li.no1{
_margin-left:20px;
}
IE6的3px bug

解決辦法:
不用管,因為根本就不允許用兒子踹父親。所以,如果你出現(xiàn)了
3px bug,說明你的代碼不標準。