Top and bottom margin overlapping transfer problem
I found that obsessive-compulsive disorder is really a serious illness of mine. . . All situations must be tested every time. . . BUT!!!!!!!!!The sad thing is, I can't remember so many situations. . . I still have to keep making and troubleshooting errors when writing code~ I can’t stand myself anymore! But let’s summarize this part here~
The following parts should cover all situations of margin overlap problems:
1. Two The margins above and below ordinary elements will be merged into one margin, whichever one will be elected!
Two floating elements will not have the problem of margin transfer. The margin-bottom of the upper element and the margin-top of the lower element are still added together as the margin value between the two.
2. If two elements are included in the relationship, the upper and lower margin values of the parent element and the child element will also be merged (recommended learning: CSS video tutorial)
When the parent element does not add a border and does not set the width and height, that is, the parent does not trigger haslayout |
Under IE6, 7 and standard browsers, it will A margin transfer problem occurs when the height of the child element and the parent element are the same (the top of the child element will be in a straight line with the top of the parent element, and the bottom will be in a straight line with the bottom of the parent element), while the parent element selects the larger one between the two. The value is used as the margin-top value and margin-bottom value of the parent element! ! ! The margin-left and margin-right values of the child elements still exist |
When the parent element does not add a border, but sets the width or height or zoom: 1; that is, when the parent adds an attribute that can trigger haslayout | Under standard browsers, margin transfer will occur, but under IE6 and 7, margin transfer will not occur (that is, the margin of the child element is relative For the parent element, it will not be passed to the parent) |
When the parent adds a border and the parent does not trigger haslayout | Standard Under the browser, margin will not be passed. Under IE6 and 7, the margin of the child element disappears completely! |
When the parent adds a border and the parent triggers haslayout (that is, adds width or height or zoom: 1), | IE6, 7 and standard Under the browser, margin delivery will not occur! ! ! |
For IE6 and 7:
That is, as long as haslayout is triggered, it does not matter whether a border is added to the parent element, or whether margin is passed in standard browsers. Margin transfer will not occur under IE6 and 7! ! !
For standard browsers:
Only adding a border can avoid margin passing! ! !
Add a border to the parent element, then there will be a dividing line in the margin between the child element and the parent element, and no merging will occur at this time! If you add a border to a child element, the margin values of the two are still not separated, so overlap will still occur!
If the parent element here contains multiple block sub-elements, then the upper and lower margins of each sub-element overlap, and the larger margin between the two is selected as the margin between the two, the first sub-element The top of the element overlaps with the parent element (the white area above the left picture is the white area from the top of the browser), and the bottom of the last child element overlaps with the parent element. The display effects of IE6, 7 and standard browsers are as shown on the left.
At this time, if the two block elements are floating elements, then there will be no margin transfer between the child element and the parent element. At this time, the upper and lower margin values are between the two. The respective margin values are added together! The standard browser displays as shown in the picture below, and IE6 displays as shown on the right of the picture below. But why is there a difference in the display?
Because, God! One wave comes after another! Block elements, horizontal margins and floats have caused a new compatibility issue in IE6 - the double margin bug (note that IE7 does not have a double margin bug!!!!)
Therefore
In practice, you must first add the attribute that triggers haslyout to the parent element! This article ensures that margin transfer problems and margin value disappearance problems do not occur under IE6 and 7;
Then, consider that under standard browsers, adding floats to child elements can solve the problem of no border. There is a margin transfer problem that occurs when adding a float, but adding a float at this time will cause a double-margin bug in IE6. Therefore, in practice, we try to replace the margin of the floating block element with padding. If it cannot be changed, add display: inline to the element. ;!
3. There is no margin value between the top and bottom of the two Divs (A, B), but there is a sub-element in A that has margin. At this time, the margin value of the sub-element will be passed to the two. Will fill the margin between the two elements A and B, only in the vertical direction! ! !
For this question, that's about it. It's actually very simple. I just listed all the situations. In fact, the summary is the content of the summary above.
I feel that this margin transfer and overlap is because there is no border between the two margin values or padding separates the margin area! ! ! !
The above is the detailed content of Top and bottom margin overlapping transfer problem. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

It's out! Congrats to the Vue team for getting it done, I know it was a massive effort and a long time coming. All new docs, as well.

I'd say "website" fits better than "mobile app" but I like this framing from Max Lynch:

I had someone write in with this very legit question. Lea just blogged about how you can get valid CSS properties themselves from the browser. That's like this.

The other day, I spotted this particularly lovely bit from Corey Ginnivan’s website where a collection of cards stack on top of one another as you scroll.

If we need to show documentation to the user directly in the WordPress editor, what is the best way to do it?

There are a number of these desktop apps where the goal is showing your site at different dimensions all at the same time. So you can, for example, be writing

Questions about purple slash areas in Flex layouts When using Flex layouts, you may encounter some confusing phenomena, such as in the developer tools (d...

CSS Grid is a collection of properties designed to make layout easier than it’s ever been. Like anything, there's a bit of a learning curve, but Grid is
