一、起因:

  CSS布局中浮动问题的四种解决方案-LMLPHP

  子盒子设置浮动之后效果:

  CSS布局中浮动问题的四种解决方案-LMLPHP

  由此可见,蓝色的盒子设置浮动之后,因为脱离了标准文档流,它撑不起父盒子的高度,导致父盒子高度塌陷。如果网页中出现了这种问题,会导致我们整个网页的布局紊乱

二、解决方案:

  • 父盒子设置固定高度
  • 内墙法
  • 伪元素清除法
  • overflow:hidden

(1)父盒子设置固定高度

  CSS布局中浮动问题的四种解决方案-LMLPHP

  虽然,给父盒子设置了固定高度能暂时解决我们的问题,但是它的使用不灵活,如果未来子盒子的高度需求发生了改变(网页的多处地方),那么我们得手动需要更改父盒子的高度。后期不易维护。

(2)内墙法

  在浮动元素的后面加一个空的块级元素(通常是div),并且该元素设置 clear:both;属性。clear属性,字面意思就是清除,那么both,就是清除浮动元素对我左右两边的影响。

  代码如下:

    <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>浮动元素的破坏性</title>
<style type="text/css">
.father{
border: 1px solid red;
}
.child{
width: 200px;
height: 200px;
float: left;
background-color: green;
}
.clearfix{
clear: both;
}
</style>
</head>
<body>
<div class="father">
<div class="child">儿子</div>
<div class="clearfix"></div>
</div>
</body>
</html>

(3)伪元素清除法

  内墙法是在浮动元素的后面加一个空的块级元素(通常是div),并且该元素设置clear:both;属性。

  那么正好在css3的属性用法中整好有个选择器也完全符合这个用法,伪元素选择器。伪元素选择器很简单。就像伪类一样,让伪元素添加了选择器,但不是描述特殊的状态,允许为元素的某些部分设置样式。

(4)overflow:hidden

  

05-20 16:07