浮动
文档流
文档流,是指盒子按照html标签编写的顺序依次从上到下,从左到右排列,块元素占一行,行内元素在一行之内从左到右排列,先写的先排列,后写的排在后面,每个盒子都占据自己的位置。
浮动特性
1、浮动元素有左浮动(float:left)和右浮动(float:right)两种
2、浮动的元素会向左或向右浮动,碰到父元素边界、浮动元素、未浮动的元素才停下来
3、相邻浮动的块元素可以并在一行,超出父级宽度就换行
4、浮动让行内元素或块元素自动转化为行内块元素
5、浮动元素后面没有浮动的元素会占据浮动元素的位置,没有浮动的元素内的文字会避开浮动的元素,形成文字饶图的效果
6、父元素没有给定高度的前提下,父元素内整体浮动的元素无法撑开父元素,需要清除浮动
7、浮动元素之间没有垂直margin的合并
清除浮动
- 父级上增加属性overflow:hidden
- 在最后一个子元素的后面加一个空的div,给它样式属性 clear:both(不推荐)
- 使用成熟的清浮动样式类,clearfix
.clearfix:after,.clearfix:before{ content: "";display: table;}
.clearfix:after{ clear:both;}
.clearfix{zoom:1;}
清除浮动的使用方法:
.con2{... overflow:hidden}
或者
<div class="con2 clearfix">
初始状态:父级标签con2有高度
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>清除浮动</title>
<style type="text/css">
.con,.con2{
width:300px;
border:1px solid #000;
margin:100px auto 0;
font-size:0;
height:200px;
}
.con a{
width:50px;
height:50px;
display:inline-block;
background-color:gold;
font-size:16px;
margin:10px;
text-align:center;
line-height:50px;
text-decoration:none;
}
.con2 a{
width:50px;
height:50px;
background-color:gold;
font-size:16px;
margin:10px;
text-align:center;
line-height:50px;
text-decoration:none;
float:left;
}
</style>
</head>
<body>
<div class="con">
<a href="">1</a>
<a href="">1</a>
<a href="">1</a>
<a href="">1</a>
<a href="">1</a>
<a href="">1</a>
<a href="">1</a>
<a href="">1</a>
</div>
<div class="con2">
<a href="">12</a>
<a href="">12</a>
<a href="">12</a>
<a href="">12</a>
<a href="">12</a>
<a href="">12</a>
<a href="">12</a>
<a href="">12</a>
</div>
</body>
</html>
去掉父标签的高度后,父元素内的标签无法撑开父元素
.con,.con2{
width:300px;
border:1px solid #000;
margin:100px auto 0;
font-size:0;
}
此时需要清除浮动,
方法一:在父级上增加属性overflow:hidden
.con2{
overflow:hidden;
}
方法二:在
最后一个子元素的后面加一个空的div,给它样式属性 clear:both,清除两边浮动(不推荐)
<div class="con2">
<a href="">12</a>
<a href="">12</a>
<a href="">12</a>
<a href="">12</a>
<a href="">12</a>
<a href="">12</a>
<a href="">12</a>
<a href="">12</a>
<div style="clear:both"></div>
</div>
方法三:使用清除浮动样式类,clearfix(实际开发较常使用的方法)
.clearfix:after{
content:"";
display:table;
clear:both;
}
然后在父标签引用该样式
<div class="con2 clearfix">
附:样式改写为如下方式可以同时清除浮动和塌陷
.clearfix:before,.clearfix:after{
content:"";
display:table;
}
.clearfix:after{
clear:both;
}
.clearfix{
zoom:1;
}