轻松玩转CSS浮动原理

本文通过四个实验详细解析CSS浮动的基本原理,包括浮动如何使元素脱离文档流、失去块级作用及仅在其所在行向左或向右浮动的特点。并通过清除浮动的方式避免布局问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实CSS浮动原理就4句话,不像网上的某些文章说的天花乱坠!

  1. 浮动必会脱离文档流
  2. 浮动会失去块级作用
  3. 浮动只在自己所在位置那行向左或者向右浮动
  4. 在宽度和高度没有设定的情况下,一个元素加上float后,会变成类似内联元素的效果,但是它其实是块级元素,width和height都可以设置的

请仔细理解上面这三句话,下面我们来验证。

实验1. 最基本测验:

<!DOCTYPE html>
<html>
<head>
	<title>css浮动</title>
	<style type="text/css">
		.one {
			width: 100px;
			height: 100px;
			background: #f00;
		}
		.two {
			width: 110px;
			height: 110px;
			background: #ff0;
		}
		.three {
			width: 120px;
			height: 120px;
			background: #0f0;
		}
	</style>
</head>
<body>
<div class="one"></div>
<div class="two"></div>
<div class="three"></div>
</body>
</html>
实验1对应结果:

这里写图片描述

实验1结果分析:

因为div为块标签,而且处于同一文档流当中,固会向下排列。

实验2 我让div1、div2、div3全部浮动

<!DOCTYPE html>
<html>
<head>
	<title>css浮动</title>
	<style type="text/css">
		.one {
			width: 100px;
			height: 100px;
			background: #f00;
			float: left;
		}
		.two {
			width: 110px;
			height: 110px;
			background: #ff0;
			float: left;
		}
		.three {
			width: 120px;
			height: 120px;
			background: #0f0;
			float: left;
		}
	</style>
</head>
<body>
<div class="one"></div>
<div class="two"></div>
<div class="three"></div>
</body>
</html>
实验2对应结果:

这里写图片描述

实验2结果分析:

因为div1、div2、div3都添加了浮动属性,所以会失去块级作用,所以他们会排列在第一行,并且是在标准文档流之上。因为浮动只能在自己所在位置那行向左或者向右浮动,又因为浮动都在标准文档流之上,所以会依次排列。

实验3 我让div1浮动,div2不浮动,div3浮动

<!DOCTYPE html>
<html>
<head>
	<title>css浮动</title>
	<style type="text/css">
		.one {
			width: 100px;
			height: 100px;
			background: #f00;
			float: left;
		}
		.two {
			width: 110px;
			height: 110px;
			background: #ff0;
		}
		.three {
			width: 120px;
			height: 120px;
			background: #0f0;
			float: left;
		}
	</style>
</head>
<body>
<div class="one"></div>
<div class="two"></div>
<div class="three"></div>
</body>
</html>
实验3结果:

这里写图片描述

实验3结果分析:

div1浮动,所以div1失去块级作用,并且脱离标准文档流,因此div1在第一行。
div2不浮动,因为div1浮动了,脱离了标准文档流,所以div2会在第一行的位置,并且在div1的下面。
div3浮动,因为div2不浮动,仍然是块级作用域,所以div3不可能跑到第一行去了,只能在第二行位置,因为浮动只能在自己所在行的位置向左或向右浮动,所以div3在第二行,并且脱离文档流。

实验4 div1左浮动,div2右浮动,div3左浮动

<!DOCTYPE html>
<html>
<head>
	<title>css浮动</title>
	<style type="text/css">
		.one {
			width: 100px;
			height: 100px;
			background: #f00;
			float: left;
		}
		.two {
			width: 110px;
			height: 110px;
			background: #ff0;
			float: right
		}
		.three {
			width: 120px;
			height: 120px;
			background: #0f0;
			float: left;
		}
	</style>
</head>
<body>
<div class="one"></div>
<div class="two"></div>
<div class="three"></div>
</body>
</html>
实验4结果:

这里写图片描述

实验4结果分析:

div1左浮动,所以div1失去块级作用,并且脱离标准文档流,因此div1在第一行最左边。
div2右浮动,所以div2失去块级作用,并且脱离标准文档流,又因为div1失去了块级作用,所以div2在第一行最右边。
div3左浮动,所以div3失去块级作用,并且脱离标准文档流,因为div1、div2都浮动了,所以div3会占到第一行的位置的下面,因为div3也具有浮动,而且左浮动,所以会在div1的右边位置。

清除浮动

清除浮动包括清除左浮动、清除右浮动、清除左右浮动
clear: left 让该标签的左边不能有其他标签,如果有,则他会跑到下一行
clear: right 让该标签的右边不能有其他标签,如果有,则他会跑到下一行
clear: both 让该标签的左右均不能有其他标签,如果有,则他会跑到下一行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

. . . . .

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值