Home >Web Front-end >CSS Tutorial >Why margin-top does not act on parent elements

Why margin-top does not act on parent elements

巴扎黑
巴扎黑Original
2017-06-28 13:44:041728browse

Whymargin-top does not act on the parent element:
Suggestion: Handwrite the code as much as possible, which can effectively improve the learning efficiency and depth .
As for the basic usage of the margin-top attribute, it couldn't be simpler, 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.softwhy.com/" /><title>为什么margin-top不是作用于父元素</title><style type="text/css"> * 
{ 
  margin:0px; 
  padding:0px; 
} p 
{ 
  width:100px; 
  height:100px; 
  background-color:green; 
  margin-top:50px; 
} 
</style> 
</head> 
<body> 
  <p></p> 
</body> 
</html>

The above code can set the top margin of p to 50px, everything runs well, no If you have any questions, please 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.softwhy.com/" /><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> 
<p id="parent"> 
  <p id="children"></p> 
</p> 
</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 is not achieved. The expected effect is that the top of the child element is close to the parent element, and the margin-top seems to be transferred to the parent element, allowing the parent element to generate a 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 the parent element nor the resource is 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.
For more information about margin merging, please refer to the margin merging detailed explanation chapter.

The above is the detailed content of Why margin-top does not act on parent elements. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn