float属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘
语法:
选择器 { float :属性值;}
属性值 | 描述 |
none | 元素不浮动(默认值) |
left | 元素向左浮动 |
right | 元素向右浮动 |
1、特性
- 脱离标准普通流的控制(浮)移动到指定位置(动)(俗称脱标)
- 浮动的盒子不再保留原先的位置
- 如果多个盒子都设置了浮动,则它们会按照属性值一行内显示且顶端对齐排列
- 浮动的元素是相互贴靠在一起的(不会有缝隙),如果父级宽度装不下这些浮动的盒子,多出的盒子会另起一行对齐
- 浮动元素具有行内块元素(注:如果块级盒子没有设置宽度,默认宽度和父级一样宽,但是添加了浮动后,它的大小根据内容来决定)
建议:为了约束浮动元素位置浮动元素和标准流父级元素搭配使用,先用标准流的父元素排列上下位置之后内部子元素采取浮动排列左右位置。
注意事项:浮动的盒子只会影响浮动盒子后面的标准流不会影响前面的标准流
2、清除浮动
由于父级盒子很多情况下不方便给宽度但是子盒子浮动又不占有位置,最后父级盒子高度为0是就会影响下面的标准流盒子
①本质:清除浮动造成的影响,但是如果父盒子本身有高度则不需要清除浮动。清除浮动之后,父级就会根据浮动的子盒子自动检测高度,父级有了高度之后就不会影响下面的标准流了
②语法:
clear:both;
③清除浮动的方法合集
- 额外标签法(隔墙法):在浮动元素末尾添加一个空的标签例如<div></div>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>清除浮动之额外标签法</title>
<style>
.box {
width: 800px;
border: 1px solid blue;
margin: 0 auto;
}
.damao {
float: left;
width: 300px;
height: 200px;
background-color: purple;
}
.ermao {
float: left;
width: 200px;
height: 200px;
background-color: pink;
}
.footer {
height: 200px;
background-color: black;
}
.clear {
clear: both;
}
</style>
</head>
<body>
<div class="box">
<div class="damao">大毛</div>
<div class="ermao">二毛</div>
<div class="ermao">二毛</div>
<div class="ermao">二毛</div>
<div class="ermao">二毛</div>
<div class="clear"></div>
<!-- 这个新增的盒子要求必须是块级元素不能是行内元素 -->
</div>
<div class="footer"></div>
</body>
</html>
缺点:会添加许多无意义的标签,使代码变得复杂
- 父级添加overflow属性
属性值随便,但是此方法无法显示溢出部分
- 父级添加after属性
.clearfix:after {
content: "";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix {
/* IE6、7 专有 */
*zoom: 1;
}
- 父级添加伪元素
.clearfix:before,
.clearfix:after {
content: "";
display: table;
}
.clearfix:after {
clear: both;
}
.clearfix {
*zoom: 1;
}