2020-08-24

浮动布局疑问——左右浮动的元素互不干扰

最近在学习《HTML5布局之路》,书中对浮动布局的介绍中提到:

在浮动的过程中,左右浮动的模块并不互相干涉,左浮动的模块有可能会阻挡其他左浮动的模块,右浮动的模
块有可能会阻挡其他右浮动的模块。但是,无论左浮动还是右浮动,都会占据空间,因此在最终的空间占用上,
还是会互相有所影响。

书中所举例子如下:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>HTML5布局之路-浮动功能案例3</title>
	<link rel="stylesheet" href="reset.css">
	<style>
		.wrap {
			width: 600px;
			border: 5px solid black;
		}

		.box1 {
			float: left;
			width: 150px;
			height: 150px;
			background: #999;
		}

		.box2 {
			float: left;
			width: 150px;
			height: 300px;
			background: #ccc;
		}

		.box3 {
			float: right;
			width: 150px;
			height: 150px;
			background: blue;
		}

		.box4 {
			float: right;
			width: 150px;
			height: 150px;
			background: yellow;
		}
	</style>
</head>
<body>
	<div class="wrap clearfix">
		<div class="box1">1</div>
		<div class="box2">2</div>
		<div class="box3">3</div>
		<div class="box4">4</div>
	</div>
</body>
</html>

显示效果:

 

从图上第3个div的浮动轨迹可以知道,向右浮动的元素是可以穿过向左浮动的元素继续向上浮动然后再向右浮动。

之后参照书上的例子,我自己写了一段代码

<!doctype html>
<html>
<head>
	<meta charset="utf-8">
	<title> Complex Layout </title>
	<style>
		.wrap {
		width: 300px;
		border: 5px solid black;
		margin: 0px auto;
		}

		.box1 {
			float: left;
			width: 150px;
			height: 300px;
			background: blue;
			color: white;
		}

		.box2 {
			float: left;
			width: 150px;
			height: 200px;
			background: red;
		}

		.box3 {
			float: left;
			width: 150px;
			height: 150px;
			background: yellow;
		}

		.box4 {
			float: right;
			width: 150px;
			height: 150px;
			background: green;
		}

		.clearfix:after {
			display: block;
			clear: both;
			height: 0;
			content: "";
		}
	</style>
</head>
<body>

	<div class="wrap clearfix">
		<div class="box1">1 左浮动</div>
		<div class="box2">2 左浮动</div>
		<div class="box3">3 左浮动</div>
		<div class="box4">4 右浮动</div>
	</div>
</body>
</html>

显示效果如下:

为什么这里第4个div的浮动轨迹是左图而不是右图呢?

如果有说得不对不清楚的地方,恳请批评指正(●'◡'●)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值