Detailed explanation of margin merging:
The phenomenon of margin merging is very common in web page layout, and this must be clearly understood. Be prepared for a rainy day, otherwise work efficiency may be affected or even seriously hinder the progress of the project. There are already a large number of related articles on the Internet. Next, we will introduce the phenomenon of margin merging through examples and a summary of online textbooks.
Concept:
Two or more adjacent margins are merged into one margin in the vertical direction, which is the so-called margin merging.
This phenomenon does not exist in the horizontal direction.
Margin merging conditions:
1. There is no non-empty content, padding, border and clear separation between adjacent margins.
2. The objects are all in the document flow, that is, elements that are not floating and whose position attribute values are not absolute and fixed.
Merge can exist between sibling objects or between parent and child objects. Let’s introduce them separately:
1. Margin merging between sibling objects:
The example is as follows:
<!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"> div{ width:100px; height:100px; } .top{ background-color:green; margin-bottom:20px; } .bottom{ background-color:red; margin-top:10px; } </style> </head> <body> <div class="top"></div> <div class="bottom"></div> </body> </html>
The performance of the above code can be seen that the top margin of the bottom element and the bottom margin of the top element are merged, and also That is, the vertical distance between the two elements is 20px, not 20px 10px=30px. It can be seen that the value of the two outer margins is larger. Let’s look at a 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"> div{ width:100px; height:100px; } .top{ background-color:green; margin-bottom:-20px; } .bottom{ background-color:red; margin-top:10px; position:relative; left:20px; } </style> </head> <body> <div class="top"></div> <div class="bottom"></div> </body> </html>
If the margins are positive or negative, then select the maximum positive value and the minimum negative value and add them to get two The value to combine the two margins. Look at another example 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"> div{ width:100px; height:100px; } .top{ background-color:green; margin-bottom:-20px; } .bottom{ background-color:red; margin-top:-10px; position:relative; left:20px; } </style> </head> <body> <div class="top"></div> <div class="bottom"></div> </body> </html>
If the object’s margins are all negative numbers, then take the smallest negative number as the margin.
2. Parent-child margin merging:
Let’s look at a code example first:
<!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>
In the above code , the phenomenon of margins and merging occurs. At this time, the margins of the child element do not act on the parent element, but on objects outside the parent element. Parent-child margin merging must not only satisfy the two margin merging bars introduced at the beginning of the article, but also satisfy the fact that the parent element cannot have contextual layout attributes, such as overflow (except visible) or display:inline-block.
Special note:
The examples of margin merging introduced above only involve two objects, because this is the most common situation in practical applications, but The phenomenon of margin merging is not limited to two objects. As long as the conditions for margin merging are met, margin merging can occur. The code example is as follows:
<!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"></style> </head> <body> <div style="border:1px solid red;width:200px;"> <div style="margin-top:50px; background-color:green;"> <div style="margin-top:-50px;"> <div style="margin-top:150px;">蚂蚁部落</div> </div> </div> </div> </body> </html>
above In the code, the three margins are merged. It is important to note that the method of calculating the merged margin values is not calculated layer by layer, but follows the several principles introduced above. The above method of merging is to select the smallest sum from the negative values to the positive values. The largest sum of value selections is -50px 150px=100px.
There is also a more extreme merging method: the margins of the elements themselves will also be merged. The code example is as follows:
<!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"></style> </head> <body> <div style="border:1px solid red;width:200px;"> <div style="margin-bottom:50px;margin-top:50px;"></div> </div> </body> </html>
As can be seen from the running results of the above code, Its own margins are merged, but this div cannot have height, content, etc., because the upper and lower margins are not adjacent, and the conditions for merging margins are not met.
The original address is: http://www.51texiao.cn/div_cssjiaocheng/2015/0501/510.html