We all know that clearfix is usually written like this:
.clearfix:before,.clearfix:after{ content:""; display:table; } .clearfix:after{clear:both;}
But why use display: table? When I use display:block, the display seems to be normal and the floats can be cleared.
I have also searched for this question, and I feel that the explanation is confusing or my level is too low. Anyway, I can’t understand what they want to express, and they don’t give examples. Okay, nonsense. Without further ado, let’s take a look at the results:
See the Pen Clearfix by wenjie (@wenjie) on CodePen.
There are a lot of talks on the Internet about how to make the parent container form a BFC and what to prevent margin collapse. But if I don’t give you examples, I won’t collapse no matter what I do. I originally tested the blue piece. Did you see it? I used: block. The margin is normal and has not collapsed? Later I discovered that the margin actually needs to be on a label that is not floating for it to collapse. So display:table is to solve this problem.
When both are floating, collapse will not occur. No matter how you test, you will not be able to detect what is wrong with using block instead of table.
Why should we write: before? When I remove it, I also clear the float normally. In the same way, it also prevents the margin-top from collapsing. It can also be measured when there are no floating labels.
Actually, I have doubts about the word collapse. It has not collapsed, its margin still exists, it is just a margin for the outer container. Doesn't collapse mean that it doesn't exist or becomes smaller?
In the latest browser (I used FF54 for testing), you can directly use display: flow-root; to clear floats. The effect is the same as the display:table we use.
The above is the detailed content of Differences in usage of display:table and display:block. For more information, please follow other related articles on the PHP Chinese website!