css--父元素塌陷

时间:2023-03-10 01:19:26
css--父元素塌陷

  当父元素内都是漂浮元素时,会造成父高度塌陷的问题。(因为等同于父元素内容为空,所以长,宽都等于空)

  我们想要的页面结构是:

css--父元素塌陷

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.son1{
width: 100px;
height: 100px;
background-color: red;
float: left;
}
.son2{
width: 100px;
height: 100px;
background-color: green;
float: left;
}
.p2{
width: 100%;
height: 100px;
background-color: yellow;
}
</style>
</head>
<body>
<div class="p1">
<div class="son1"></div>
<div class="son2"></div>
</div>
<div class="p2"></div>
</body>
</html>

父元素塌陷

  css--父元素塌陷

  这时候,我们想既然父元素为空,导致了高度塌陷,那么就给父元素填充点文本内容。

<div class="p1">123
<div class="son1"></div>
<div class="son2"></div>
</div>

css--父元素塌陷

  虽然黄色模块向下移动了,但是并没有达到我们想要的效果。我们想给父元素设置一个固定的长度和宽带。

<div class="p1" style="height: 100px;width: 100%">
<div class="son1"></div>
<div class="son2"></div>
</div>

css--父元素塌陷

  看效果,已经达到我们预期了。但是这个解决方案真的好吗?答案明显是否定的。当悬浮模块大小发生改变时,我们需要再手动更改父元素的长宽,这十分不方便。

  这时候,我们想到了clear,他会让元素周边不会有悬浮元素,可以达到块标签的效果。

  我们需要先在父元素中创建一个空白块元素(div)。再给他设置clear属性。就可以达到效果了

<div class="p1">
<div class="son1"></div>
<div class="son2"></div>
<div style="clear: both"></div>
</div>