1.浮动流排版方式
- 浮动流是一种"半脱离标准流"的排版方式
1.什么是浮动元素的脱标?
脱标: 脱离标准流
当某一个元素浮动之后, 那么这个元素看上去就像被从标准流中删除了一样, 这个就是浮动元素的脱标
2.浮动元素脱标之后会有什么影响?
如果前面一个元素浮动了, 而后面一个元素没有浮动 , 那么这个时候前面一个元就会盖住后面一个元素
例如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<style>
.box1{
float: left;
width: 100px;
height: 100px;
background-color: red;
}
.box2{
width: 150px;
height: 150px;
background-color: blue;
}
</style>
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>
</body>
从结果中可以看到box1左浮动,而box2没有浮动,box1先脱离了标准流,box2顶到了box1的位置,然后box1浮动到最左边同时也覆盖到了box2上面。
- 浮动流只有一种排版方式, 就是水平排版. 它只能设置某个元素左对齐或者右对齐(float的常用取值none、left、right)
注意点:
- 浮动流中没有居中对齐。
- 在浮动流中不可以使用margin: 0 auto;
2.浮动元素的排序规则
-
相同方向上的浮动元素, 先浮动的元素会显示在前面, 后浮动的元素会显示在后面
- 不同方向上的浮动元素, 左浮动会找左浮动, 右浮动会找右浮动(然后再遵循上面那条原则)
- 浮动元素浮动之后的位置, 由浮动元素浮动之前在标准流中的位置来确定
关于第三点规则,先上代码看结果在分析
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>浮动元素排序规则</title>
<style>
.box1{
float: left;
width: 50px;
height: 50px;
background-color: red;
}
.box2{
width: 100px;
height: 100px;
background-color: pink;
}
.box3{
float: left;
width: 150px;
height: 150px;
background-color: yellow;
}
.box4{
float: left;
width: 200px;
height: 200px;
background-color: tomato;
}
</style>
</head>
<body>
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>
</body>
</html>
分析:1.box1原本应该在标准流中的第一行,box1左浮,脱离标准流浮动到第一行,没有问题
2.box1脱离了标准流,box2顶上了box1的位置,box2没有浮动,所以box1盖住了box2
3.box2现在在标准流的第一行,box3就顶到了第二行,box3再左浮动,显示在第二行的左边
4.box3浮动脱离标准流,box4又顶到了第二行,然后再左浮动,并且符合第一条规则,box4在box3的左边
3.浮动元素贴靠现象
-
如果父元素的宽度能够显示所有浮动元素, 那么浮动的元素会并排显示
- 如果父元素的宽度不能显示所有浮动元素, 那么会从最后一个元开始往前贴靠
- 如果贴靠了前面所有浮动元素之后都不能显示, 最终会贴靠到父元素的左边或者右边,即使父元素宽度不够了,也不会再改变
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>浮动元素贴靠现象</title>
<style>
.father{
width: 400px;
height: 200px;
border: 1px solid #000;
}
.box1{
float: left;
width: 50px;
height: 100px;
background-color: red;
}
.box2{
float: left;
width: 50px;
height: 40px;
background-color: green;
}
.box3{
float: left;
width: 250px;
height: 60px;
background-color: blue;
}
</style>
</head>
<body>
<div class="father">
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
</div>
</body>
</html>
不断缩小father的width,根据规则会得到以下结果
4.浮动元素字围现象
- 浮动元素不会挡住没有浮动元素中的文字, 没有浮动的文字会自动给浮动的元素让位置,这个就是浮动元素字围现象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>浮动元素字围现象</title>
<style>
p{
width: 300px;
height: 300px;
background-color: yellow;
}
img{
float: left;
}
</style>
</head>
<body>
<img src="images/animal2.png" alt="">
<p>
文字文字文字 文字文字文字 文字文字文字 文字文字文字 文字文字文字 文字文字文字 文字文字文字 文字文字文字 文字文字文字 文字文字文字 文字文字文字文字文字文字 文字文字文字 文字文字文字 文字文字文字 文字文字文字 文字文字文字 文字文字文字 文字文字文字 文字文字文字 文字文字文字 文字文字文字文字文字文字 文字文字文字 文字文字文字 文字文字文字 文字文字文字 文字文字文字
</p>
</body>
</html>