CSS中清除浮动的方案

文章类型:CSS

发布者:hp

发布时间:2022-09-05

在实际开发中,会遇到高度坍塌的问题,或者使用浮动的时候,会导致内容溢出到容器外面,导致页面布局破坏,所以需要清除浮动。

clear清除浮动 : clear:left 清除左侧浮动元素; clear:right 清除右侧浮动元素; clear:both 清除左右两边; clear:none 不清除

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#box{
border: 1px solid red;
}
#box1{
width: 100px;
height: 100px;
background: gainsboro;
float: left;
}
</style>
</head>
<body >
<div id="box">
<div id="box1"></div>
</div>

</body>
</html>

高度会坍塌

解决方案一:额外标签法

<div id="box">
<div id="box1"></div>
<div style="clear: both;"></div>
</div>

通过添加一个标签,clear:both会把前边元素中设有浮动属性的元素,当做没设浮动一样来看待,以此来消除其对自己的影响。

解决方案二:父元素添加样式形成BFC

	#box{
border: 1px solid red;
overflow: hidden;
}

添加样式使其父元素成为块级元素,解决高度坍塌

解决方案三:使用after伪元素清除浮动

	#box:after{
display: block;
content: '';
height: 0;
clear:both;
}
#box{
*zoom: 1; //兼容ie
}

解决方案四:使用before和after双伪元素清除浮动

#box:before,#box:after{
display: table;
content: '';
}
#box:after{
clear: both;
}
#box{
*zoom: 1; //兼容ie
}

解决方案五:手动为父元素添加高度

#box{
width: 100%;
height: 100px;
border: 1px solid red;

/* overflow: hidden; */
}

解决方案六:添加换行标签

<br clear="all"/>

解决方案七:父元素跟着浮动

#box{
width: 100%;

border: 1px solid red;
float: left;
/* overflow: hidden; */
}

解决方案八:父元素设置样式为table

#box{
width: 100%;
display: table;
border: 1px solid red;
/* float: left; */
/* overflow: hidden; */
}