什么是浮动塌陷
在文档流中,若父元素未设置高度,那么父元素的高度默认是被子元素撑开的,即子元素多高,父元素就有多高。但是当子元素设置浮动之后,子元素就会完全脱离文档流,父元素还在文档流中,此时父元素的高度就没有子元素撑起(子元素无法撑起父元素的高度),从而导致父元素的高度塌陷。简单来说,就是包含含有浮动的元素的上一级的高度变为0了,下面的元素会上去,这样会导致页面布局混乱。
浮动塌陷解决方法
1、父元素结束之前添加一个标签 <div style="clear:both;"></div>
image.png缺点:增加了无意义的标签
2、给父元素设置overflow:hidden; zoom:1;
缺点:要是子元素要margin负值定位或是负的绝对定位,会被裁掉,所以此方法是有不小的局限性的。
3、让父元素本身也浮动float:left;
缺点:虽然可以撑开父元素,但是会导致父元素的宽度丢失,而且会导致下边的元素上移,使得跟父元素相邻的元素的布局受到影响
4、给父元素一个固定高度,此方法适用于子元素高度已知并且固定的情况。
5、给父元素设置display: inline-block;
缺点:会导致父元素的宽度丢失
6、after伪类+zoom方法清除浮动,给父盒子盒子的after伪元素设置clear属性。,最推荐的方法
.father{
width: 1000px;
min-height: 100px;
background: yellow;
border: 1px solid yellow;
zoom: 1;
}
.father:after {
content: ""; /*生成内容作为最后一个元素,至于content里面是什么没有影响*/
display: block; /*使生成的元素以块级元素显示,占满剩余空间*/
height: 0; /*避免生成的内容破坏原有空间的高度*/
clear: both; /*闭合浮动*/
visibility: hidden; /*使生成内容不可见,并允许可能生成内容盖住的内容进行点击和交互*/
}
7、某些情况下 position:absolute/fixed(涉及到定位问题)
网友评论