国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > CSS > 正文

margin折疊的問題探討

2024-07-11 08:51:52
字體:
供稿:網(wǎng)友

 前幾天,有個電面問道了這個問題,抓緊補一下這方面的缺口。以下是一下網(wǎng)上收集的資料:

margin折疊的問題,不是bug,而是正常的規(guī)則。

在css2.1中,水平的margin不會被折疊。

垂直margin可能在一些盒模型中被折疊:

 1、在常規(guī)文檔流中,2個或以上的塊級盒模型相鄰的垂直margin會被折疊。
最終的margin值計算方法如下:
    a、全部都為正值,取最大者;
    b、不全是正值,則都取絕對值,然后用正值減去最大值;
    c、沒有正值,則都取絕對值,然后用0減去最大值。
注意:相鄰的盒模型可能由DOM元素動態(tài)產(chǎn)生并沒有相鄰或繼承關系。

2、相鄰的盒模型中,如果其中的一個是浮動的(floated),垂直margin不會被折疊,甚至一個浮動的盒模型和它的子元素之間也是這樣。

3、設置了overflow屬性的元素和它的子元素之間的margin不會被折疊(overflow取值為visible除外)。

4、設置了絕對定位(position:absolute)的盒模型,垂直margin不會被折疊,甚至和他們的子元素之間也是一樣。

5、設置了display:inline-block的元素,垂直margin不會被折疊,甚至和他們的子元素之間也是一樣。

6、如果一個盒模型的上下margin相鄰,這時它的margin可能折疊覆蓋(collapse through)它。在這種情況下,元素的位置(position)取決于它的相鄰元素的margin是否被折疊。
    a、如果元素的margin和它的父元素的margin-top折疊在一起,盒模型border-top的邊界定義和它的父元素相同。
    b、另外,任意元素的父元素不參與margin的折疊,或者說只有父元素的margin-bottom是參與計算的。如果元素的border-top非零,那么元素的border-top邊界位置和原來一樣。
一個應用了清除操作的元素的margin-top絕不會和它的塊級父元素的margin-bottom折疊。
注意,那些已經(jīng)被折疊覆蓋的元素的位置對其他已經(jīng)被折疊的元素的位置沒有任何影響;只有在對這些元素的子元素定位時,border-top邊界位置才是必需的。

7、根元素的垂直margin不會被折疊。

浮動的塊級元素的margin-bottom總是與它后面的浮動塊級兄弟元素(floated next in-flow block-level sibling)的margin-top相鄰,除非那個同級元素使用了清除操作。

浮動的塊級元素的margin-top和它的第一個浮動塊級子元素(floated first in-flow block-level child)的margin-top相鄰(如果該元素沒有border-top,沒有padding-top,并且子元素沒有使用清除操作)。

浮動的塊級元素的margin-bottom如果符合下列條件,那么它和它的最后一個浮動塊級子元素的margin-bottom相鄰(如果該元素沒有指定padding-bottom或border): a、指定了height:auto b、min-height小于元素的實際使用高度(height) c、max-height大于元素的實際使用高度(height)

如果一個元素的min-height屬性設置為0,那么它所擁有的margin是相鄰的,并且它既沒有border-top和border-bottom,也沒有padding-top和padding-bottom,它的height屬性可以是0或auto,它不能包含一個內(nèi)聯(lián)的盒模型(line box),它所有的浮動子元素(如果有的話)的margin也都是相鄰的。

當一個元素擁有的margin折疊了,并且它使用了清除操作,那么它的margin-top會和緊隨其后的兄弟元素的相鄰margin折疊,但結(jié)果是它的margin將無法和其塊級父元素的margin-bottom折疊。

折疊操作是以padding、margin、border的值為基礎的(即在瀏覽器解析所有這些值之后),折疊后的margin計算將覆蓋已使用的不同margin的值。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 咸宁市| 常山县| 九龙城区| 塘沽区| 原平市| 冷水江市| 颍上县| 武义县| 莒南县| 荥经县| 双城市| 辽中县| 汕尾市| 龙岩市| 陵川县| 乐清市| 莱芜市| 静安区| 玛沁县| 伊川县| 化隆| 韶山市| 雷州市| 明光市| 湘西| 南和县| 新晃| 靖安县| 大悟县| 云阳县| 清苑县| 郸城县| 新巴尔虎右旗| 施秉县| 寿光市| 习水县| 铁岭市| 璧山县| 左权县| 阿瓦提县| 建昌县|