Home > Article > Web Front-end > Why margin-top does not act on the parent element_html/css_WEB-ITnose
Why margin-top does not act on the parent element:
As for the basic usage of margin-top attribute, it is very simple, that is to set the top margin of an object, see the following code example:
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="author" content="http://www.51texiao.cn/" /><title>蚂蚁部落</title><style type="text/css"> * { margin:0px; padding:0px; } div { width:100px; height:100px; background-color:green; margin-top:50px; } </style> </head> <body> <div></div> </body> </html>
The above code can set the top margin of the div to 50px. Everything runs well without any problems. Let’s look at the next piece of code:
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="author" content="http://www.51texiao.cn/" /><title>蚂蚁部落</title><style type="text/css"> #parent { width:200px; height:200px; background-color:red; } #children { width:60px; height:60px; background-color:green; margin:0px auto; margin-top:50px; } </style> </head> <body> <div id="parent"> <div id="children"></div> </div> </body> </html>
The original intention of the above code is to make the top of the child element 50px away from the parent element, but in fact it does not achieve the expected effect. Instead, the top of the child element is close to the parent element, and the margin-top seems to be transferred to Parent element, let the parent element generate top margin. This is actually a typical margin merging problem, but not all browsers will produce this phenomenon. Generally, standard browsers will have this phenomenon, and IE6 and IE7 will not have margin merging in this state. Conditions for top margin merging to occur:
1. There is no border between the top margin of the parent element and the top margin of the child element.
2. There is no non-empty content between the top margin of the parent element and the top margin of the child element.
3. There is no padding between the top margin of the parent element and the top margin of the child element.
3. There are no positioning attributes (except static and relative), overflow (except visible) and display:inline-block set in the parent element and child element.
4. Neither parent elements nor resources are floating.
Note: The above conditions must be met. Then the way to solve this situation is also very simple, just destroy one of the above situations.
The original address is: http://www.51texiao.cn/div_cssjiaocheng/2015/0501/506.html