clearfix
作者:会飞的
clearfix:after 伪类撑起div
在写HTML代码的时候,容器内部元素浮动之后会使容器丧失撑开的高度,导致我们需要固定容器的高度,但是有些需求是需要我们做灵活的高度的,那么我们该如何去解决这个问题,这个问题的根本原因又在于什么呢?
<div style="border:2px solid red;">
<div style="float:left;width:80px;height:80px;border:1px solid blue;">aaaaaaaa</div>
<div style="float:left;width:80px;height:80px;border:1px solid blue;">bbbbbbbb</div>
</div>
上面的代码运行之后,可以很明显的看到红色框div没有被撑开,在编写页面遇到这种情况的时候,我们通常会在容器结尾添加clear:both;
<div style="border:2px solid red;">
<div style="float:left;width:80px;height:80px;border:1px solid blue;">aaaaaaaa</div>
<div style="float:left;width:80px;height:80px;border:1px solid blue;">bbbbbbbb</div>
<div style="clear:both;"></div>
</div>
这样的话,这个div就被撑开了,我们的目的也就达到了,但是这个时候又会有新的问题产生:第一,最直观的,用于清除浮动的div占用了高度;第二用dojo做Drag & Drop的时候,由于这个div是容器div的一个字节点,如果这个节点被移动,则会造成排版上的Bug:如果要显示的蓝框的div被移到这个div之后,则因为clear:both,它会被强制换一行显示。
ok,我们一个一个来解决吧:
第一,div高度清零:
设置height:0; line-height:0; font-size:0;
第二,为容器div设置如下样式:
.clearfix:after{ content:"