鍍金池/ 問答/HTML/ 請問為什么在沒有設(shè)置border屬性的情況下,margin會無法居中?

請問為什么在沒有設(shè)置border屬性的情況下,margin會無法居中?

        <style>
            body{
                padding : 50px;
            }
            .parent{
                width : 50px;
                height : 50px;
                background-color : white;
                border : 1px solid white;
            }
            .parent:hover{
                width : 50px;
                height : 50px;
                background-color : orange;
                border : 1px solid white;
            }
            .child{
                width : 44px;
                height : 44px;
                background-color : white;
                margin : 3px;
            }
        </style>

下面這張圖是沒有border屬性的情況下用hover選擇器改變的背景色
無border屬性

這張圖是有border屬性的情況下用hover選擇器改變的背景色
有border屬性

回答
編輯回答
魚梓

https://www.cnblogs.com/huang...

已找到答案.

當(dāng)兩個容器嵌套時,如果外層容器和內(nèi)層容器之間沒有別的元素,firefox會把內(nèi)層元素的margin-top作用與父元素。

2018年9月3日 08:29
編輯回答
茍活

這個就是css定義的margin折疊機(jī)制,如果你的父元素也使用了,折疊機(jī)制會避免出現(xiàn)雙份的margin,對于布局是有好處的,瀏覽器也是這樣解析的,所有現(xiàn)代的瀏覽器都支持這種機(jī)制,但是再開發(fā)中我們又想要雙份的margin,css提供了overflow:auto,所以你只要在父元素中使用它即可,這種自帶的margin折疊機(jī)制關(guān)閉的方案。建議不要使用border,padding這些可以阻止margin折疊機(jī)制的方案,除非你的設(shè)計中剛好用到了boder,padding。

2018年2月2日 12:06