高度塌陷:父级没有设置高度且子级含有浮动属性

在开发的过程中,我们往往会使父级的高度自适应(没有固定高度,高度由子级撑开),但是有时需要子级浮动(float),这时的子级会脱离文档流,子级不会再把父级的高度撑开了。这就是高度坍塌形成的原因。

结果如下:

解决方法:

1.方法:在父级上添加高度

优点:好理解

缺点:固定的布局,不能做到自适应

2.给父级添加overflow:hidden

原理:触发了BFC

(块级格式化上下文)--  将浮动元素的高度参与计算

优点:简单,代码少

缺点:子元素含有定位属性,那么子级元素超出的部分会被隐藏

3.在最后一个浮动元素同级添加一个div,给div添加css声明

div{ clear:both;}  clear:left / right / both

原理:表示清除上方预留出来的空间

优点:清除方便

缺点:代码多,HTML结构,代码冗余,造成排版影响

4.万能清除法

原理:表示清除上方预留出来的空间

方法:a.给含有高度塌陷的父级盒子添加类名clear-fix

  .clear-fix:after{

         content:"  ";

         clear:both;

         height:0;

         width:100%;

         overflow:hidden;

         display:block;

         visibility: hidden;

}

.clear-fix{zoom:1;/\*兼容IE\*/}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19