1. 浮动的框可以向左或向右移动, 直到它的外边缘碰到包含框或另一个浮动框的边框为止。
2. 由于浮动框不在文档的普通流中, 所以文档的普通流中的块框表现得就像浮动框不存在一样。
3. float属性
3.1. 定义和用法
3.1.1. float属性定义元素在哪个方向浮动。以往这个属性总应用于图像, 使文本围绕在图像周围, 不过在CSS中, 任何元素都可以浮动。浮动元素会生成一个块级框, 而不论它本身是何种元素。
3.1.2. 假如在一行之上只有极少的空间可供浮动元素,那么这个元素会跳至下一行,这个过程会持续到某一行拥有足够的空间为止。
3.2. 默认值
3.3. 可能的值
4. CSS浮动
4.1. 请看下图, 当把框1向右浮动时, 它脱离文档流并且向右移动, 直到它的右边缘碰到包含框的右边缘:
4.1.1. 代码
<!DOCTYPE html>
<html style="background: black;">
<head>
<title>框1右浮动</title>
<meta charset="utf-8" />
</head>
<body style="background: yellow;">
<div style="width: 180px; height: 180px; background: red; float: right;">框1</div>
<div style="width: 180px; height: 180px; background: blue;">框2</div>
<div style="width: 180px; height: 180px; background: green;">框3</div>
</body>
</html>
4.1.2. 效果图
4.2. 再请看下图, 当框1向左浮动时, 它脱离文档流并且向左移动, 直到它的左边缘碰到包含框的左边缘。因为它不再处于文档流中, 所以它不占据空间, 实际上覆盖住了框2, 使框2从视图中消失。
4.2.1. 代码
<!DOCTYPE html>
<html style="background: black;">
<head>
<title>框1左浮动</title>
<meta charset="utf-8" />
</head>
<body style="background: yellow;">
<!-- 这里有内容塌陷问题 -->
<div style="width: 180px; height: 180px; background: red; float: left;"><sapn>框1</sapn></div>
<div style="width: 180px; height: 180px; background: blue;"><sapn>框2</sapn><img src="CrashBtn.png" /></div>
<div style="width: 180px; height: 180px; background: green;"><sapn>框3</sapn></div>
</body>
</html>
4.2.2. 效果图
4.3. 如果把所有三个框都向左移动, 那么框1向左浮动直到碰到包含框, 另外两个框向左浮动直到碰到前一个浮动框。
4.3.1. 代码
<!DOCTYPE html>
<html style="background: black;">
<head>
<title>框123左浮动</title>
<meta charset="utf-8" />
</head>
<body style="background: yellow; width: 600px; height: 600px;">
<!-- 解决了内容塌陷-->
<div style="width: 180px; height: 180px; background: red; float: left;"><sapn>框1</sapn></div>
<div style="width: 180px; height: 180px; background: blue; float: left;"><sapn>框2</sapn><img src="CrashBtn.png" /></div>
<div style="width: 180px; height: 180px; background: green; float: left;"><sapn>框3</sapn></div>
</body>
</html>
4.3.2. 效果图
4.4. 如下图所示, 如果包含框太窄, 无法容纳水平排列的三个浮动元素, 那么其它浮动块向下移动, 直到有足够的空间。如果浮动元素的高度不同, 那么当它们向下移动时可能被其它浮动元素"卡住":
4.4.1. 代码
<!DOCTYPE html>
<html style="background: black;">
<head>
<title>框123左浮动卡住</title>
<meta charset="utf-8" />
</head>
<body style="width: 500px; height: 600px; background: yellow; ">
<div style="width: 180px; height: 180px; background: red; float: left;"><sapn>框1</sapn></div>
<div style="width: 180px; height: 180px; background: blue; float: left;"><sapn>框2</sapn><img src="CrashBtn.png" /></div>
<div style="width: 180px; height: 180px; background: green; float: left;"><sapn>框3</sapn></div>
<div style="width: 180px; height: 180px; background: red; float: left; clear: left;"><sapn>框1</sapn></div>
<div style="width: 180px; height: 100px; background: blue; float: left;"><sapn>框2</sapn><img src="CrashBtn.png" /></div>
<div style="width: 180px; height: 100px; background: green; float: left;"><sapn>框3</sapn></div>
</body>
</html>
4.4.2. 效果图
5. 行框和清理
5.1. 浮动框旁边的行框被缩短, 从而给浮动框留出空间, 行框围绕浮动框。因此, 创建浮动框可以使文本围绕图像:
5.1.1. 代码
<!DOCTYPE html>
<html>
<head>
<title>围绕图像的文本</title>
<meta charset="utf-8" />
</head>
<body>
<img src="CrashBtn.png" style="float: left;" />
<p style="background: blue;">5.1. 浮动框旁边的行框被缩短, 从而给浮动框留出空间, 行框围绕浮动框。5.2. 因此, 创建浮动框可以使文本围绕图像:</p>
<p style="background: green;">5.1. 浮动框旁边的行框被缩短, 从而给浮动框留出空间, 行框围绕浮动框。5.2. 因此, 创建浮动框可以使文本围绕图像:5.3. 要想阻止行框围绕浮动框, 需要对该框应用clear属性。clear属性的值可以是left、right、both或none, 它表示框的哪些边不应该挨着浮动框。</p>
</body>
</html>
5.1.2. 效果图
5.2. clear属性
5.2.1. clear属性规定元素的哪一侧不允许其他浮动元素。
5.2.2. 在 CSS1和CSS2中, 这是通过自动为清除元素(即设置了clear属性的元素)增加上外边距实现的。在CSS2.1 中, 会在元素上外边距之上增加清除空间, 而外边距本身并不改变。
5.2.3. 默认值
5.2.4. 可能的值
5.3. 为了实现这种效果, 在被清理的元素的上外边距上添加足够的空间, 使元素的顶边缘垂直下降到浮动框下面:
5.3.1. 代码
<!DOCTYPE html>
<html>
<head>
<title>阻止行框围绕浮动框</title>
<meta charset="utf-8" />
</head>
<body>
<img src="CrashBtn.png" style="float: left;" />
<p style="background: blue;">5.1. 浮动框旁边的行框被缩短, 从而给浮动框留出空间, 行框围绕浮动框。5.2. 因此, 创建浮动框可以使文本围绕图像:</p>
<p style="background: green; clear: left;">5.1. 浮动框旁边的行框被缩短, 从而给浮动框留出空间, 行框围绕浮动框。5.2. 因此, 创建浮动框可以使文本围绕图像:5.3. 要想阻止行框围绕浮动框, 需要对该框应用clear属性。clear属性的值可以是left、right、both或none, 它表示框的哪些边不应该挨着浮动框。</p>
</body>
</html>
5.3.2. 效果图