CSS 浮动 float 01
1. 简介
通过设置float属性来设置浮动。设置浮动之后,可以使一个元素向其父元素的左边和右侧浮动,浮动的元素只会在父元素内部浮动而不会飘出父元素,以下为代码说明:
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>floatTest</title>
<style>
.box1{
width: 200px;
height: 200px;
background-color: brown;
}
.outter
{
width: 400px;
height: 400px;
background-color: bisque;
}
.inner{
width: 200px;
height: 200px;
background-color: blueviolet;
float: right ;
}
</style>
</head>
<body>
<div class="box1"></div>
<div class="outter">
<div class="inner"></div>
</div>
</body>
</html>
运行结果:
这里我们可以看到紫色的方块是设置了向右浮动的,但是它没有飘出其父元素,这里我们将父元素去掉再看运行结果:
代码1:
<body>
<div class="box1"></div>
<!-- <div class="outter"> -->
<div class="inner"></div>
<!-- </div> -->
</body>
运行结果:
我们可以看见,没有了父级元素的约束,紫色方块来到了当前父元素(body)的最右侧,这里紫色元素在下一行是因为棕色块在结构上写在紫色块的前边,div是属于块元素,独占一行,我们将在下面补充
现在我们将两者结构上的顺序对调再看结果
代码2:
<body>
<!-- 紫色写在前面 -->
<div class="inner"></div>
<!-- 棕色写在后面 -->
<div class="box1"></div>
<!-- <div class="outter"> -->
<!-- </div> -->
</body>
结果:
这里我们看到两者在同一行,我们将在下面一点进行补充解释
2. 开启浮动之后元素脱离文档流
上述代码2中我们交换了两个元素的位置,发现两者处于同一行,这里我们脑补一下,当紫色未开启浮动时,结果应该是两个元素在左上角一上一下排列(紫色在上),当紫色开启浮动向右浮动之后,同时他在文档流中便不占据位置,因此,棕色的块就挤上来了和紫色位于一行。
开启浮动会脱离文档流,不再占用文档流的位置。
3. 浮动元素不会超过其他的浮动的兄弟元素
浮动元素向左或者向右浮动时,不会超过它前面的浮动元素。当我们对两个元素都设置浮动时,会依次排列
4.子元素不会继承父元素的浮动属性
5.若浮动元素上方为一个未浮动块元素则无法上移
这个特点解释了代码1中为什么紫色的方块没有和棕色处在同一行,是因为棕色方块未开启浮动的关系