清除浮动
清除浮动
- 高度坍塌
当没有指定高度的父元素中的子元素全部都浮动时,父元素中内部高度因为是普通流中的块元素撑起来的,所以这个时候父元素的高度会变成0,或者会有部分浮动元素的位置会超出父元素的高度之外。这种现象,叫做"高度坍塌"。
float 浮动
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Demo15</title>
<link rel="stylesheet" href="../css/Demo15.css">
</head>
<body>
<div id="father">
<div class="layer01"><img src="../../image/img1.jpg" alt=""></div>
<div class="layer02"><img src="../../image/img2.jpg" alt=""></div>
<div class="layer03"><img src="../../image/img3.jpg" alt=""></div>
<div class="layer04">
浮动的盒子可以向左浮动,也可以向右浮动,直到它的外边缘碰到包含框或另一个浮动盒子为止。
</div>
</div>
</body>
</html>
/* Demo15 */
div {
margin: 10px;
padding: 5px;
}
#father {
border: 1px #000 solid;
}
.layer01 {
border: 1px #F00 dashed;
display: block;
float: right;
}
.layer02 {
border: 1px #00F dashed;
display: block;
float: right;
}
.layer03 {
border: 1px #060 dashed;
display: block;
float: right;
}
.layer04 {
border: 1px #666 dashed;
display: block;
float: right;
}
父级边框及塌陷问题
- 清除浮动的直接目的就是解决前面所说到的高度坍塌问题
clear: right; 右侧不允许有浮动元素
clear: left; 左侧不允许有浮动元素
clear: both; 两侧不允许有浮动元素
clear: none; 允许有浮动元素
解决方案:
1、增高父级元素高度
2、增加一个空的div标签,清除浮动
<body>
<div id="father">
<div class="layer01"><img src="../../image/img1.jpg" alt=""></div>
<div class="layer02"><img src="../../image/img2.jpg" alt=""></div>
<div class="layer03"><img src="../../image/img3.jpg" alt=""></div>
<div class="layer04">
浮动的盒子可以向左浮动,也可以向右浮动,直到它的外边缘碰到包含框或另一个浮动盒子为止。
</div>
<div class="clear"></div>
</div>
</body>
.clear {
clear: both;
margin: 0;
padding: 0;
}
3、overflow
在父级元素中增加一个 overflow: hidden
#father {
border: 1px #000000 solid
}
4、在父类添加一个伪类:after
#father {
border: 1px #000000 solid
}
#father:after {
content: '';
display: block;
clear:both;
}