需要清楚浮动的场景,应同时满足:
1.子元素浮动
2.父元素不设高度
3.父元素塌陷影响下面的盒子
解决方法:
1.额外标签法(隔墙法)
.clear { clear: both; }
在子元素最后添加一个带有属性clear:both; 的块级标签。
缺点:会多出一个无意义标签,结构化差。
2.父元素添加overflow属性
.overflow { overflow: hidden; /* overflow: auto; */ /* overflow: scroll; *//* 这个有点怪怪的 */ }
值可以是hidden、auto、scroll任意一个。
缺点:溢出部分被隐藏。
3.父元素添加after伪元素(常用)
.clearfix:after { content: ''; display: block; height: 0; clear: both; visibility: hidden; } .clearfix { /* 兼容IE6、7 */ *zoom: 1; }
相当于额外标签法的升级版,结构更清晰。
缺点:需要照顾低版本的浏览器。
4.父元素添加双伪元素(常用)
.clearfix1:before, .clearfix1:after { content: ''; display: table; } .clearfix1:after { clear: both; } .clearfix1 { /* 兼容IE6、7 */ *zoom: 1; }
使用before、after双伪元素。
缺点:需要照顾低版本浏览器。
总结摘自黑马程序员: