清除浮动的几种方法总结
定义
浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。— W3C
问题
因为浮动元素脱离了文档流,所以包围图片和文本的 div 不占据空间。造成父元素高度塌缩。
解决
1. 添加空元素
1 | .clear { |
缺点:添加了多余的空元素。
2. 浮动容器
1 | .container { |
缺点:下一个元素会受到这个浮动元素的影响。
3. 容器设置 overflow: auto
1 | .container { |
4. 容器设置 display: inline-block
1 | .container { |
缺点:改变了容器的流。
5. 伪类清除
1 | .clear::after { |
6. 容器设置 display: flow-root
1 | .container { |
缺点:浏览器兼容性较差。