在平常我们coding时候经常会发生子元素浮动而引起父级元素不能完全撑开的状况,
可能很多朋友给父级元素用overflow:hidden简单粗暴的解决,但这种方式有弊端,一是在IE6下不能完美解决,二是假如在该模块有定位的层就有定位层显示不完整的可能。
也有可能有些朋友是在父级元素里最后添加一个
来解决这个问题,但这样我们的HTML代码里就多了些冗余的代码且从语义化角度来看这也是不合理的。伪类:before与:after
:before 伪元素在元素之前添加内容
:after 伪元素在元素之后添加内容
需解决问题:在父级元素里最后添加一个
解决问题代码:
代码如下 | 复制代码 |
.clearfix:after {content: ".";display: block;height: 0;clear: both;visibility: hidden;} |
最后,给不能完全闭合的父级元素加上.clearfix类
下面创建一个.clearfix类来完美解决这个问题
代码如下:
代码如下 | 复制代码 |
.clearfix:after {content: ".";display: block;height: 0;clear: both;visibility: hidden;} * html .clearfix{zoom:1;} /* IE6 */ *+html .clearfix{zoom:1;} /* IE7 */ |
还可以:
代码如下 | 复制代码 |
clearfix:before, .clearfix:after { content:""; display:table; } .clearfix:after{ clear:both; overflow:hidden; } .clearfix{ *zoom:1; } |