clearfix为何用display:table,而不用display:block

本文转载于:猿2048网站➮clearfix为何用display:table,而不用display:blockphp

咱们都知道clearfix通常这么写:css

.clearfix:before,.clearfix:after{ 
    content:""; 
    display:table; 
} 
.clearfix:after{clear:both;}

可是为嘛用 display:table哪? 我用display:block好像也是显示很正常,也能清除浮动。浏览器

曾经也搜索过这个问题,感受都讲得糊里糊涂的仍是我水平过低了,反正我是看不懂他们想要表达啥意思,也不给例子,好了,废话很少说, 看结果吧:测试

See the Pen Clearfix by wenjie (@wenjie) on CodePen.网站

网上讲得一堆什么使父容器造成BFC,什么防止margin塌陷。可是不给例子,我怎么搞都不会塌陷。 我原本是蓝色那一块那样测试的,看到没,我用:block,margin很正常, 并无塌陷啊? 后来才发现,其实margin要在一个 没有浮动的标签上,才会发生塌陷。因此 display:table就是为了解决这个 问题的。spa

两个都浮动的时候,并不会发生塌陷,无论你怎么测都测不出来 用block代替table有何问题。 code

 

还有为何 要写:before呢?我去掉也是正常清除浮动啊, 同样的,也是防止margin-top的塌陷。也是要在没有浮动的标签上的时候才能测到。blog

 

其实这个对于塌陷这个词 我是存在疑问的。它并无塌陷,它的margin仍是确确实实存在的啊,只是针对外面的容器的margin了。 塌陷的意思 不就是不存在或者变小了吗? get

最新浏览器(我用的是FF54测试),已经能够直接用  display: flow-root;  来清除浮动了,其效果 跟咱们用的 display:table一致。it

相关文章
相关标签/搜索