035_CSS浮动

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. 效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值