关于float、absolute以及relative

本文详细解析了浮动(float)与绝对定位(absolute)在网页布局中的区别,并通过实例展示了它们在不同定位状态下的位置覆盖情况。文章进一步探讨了相同定位之间的关系,以及如何在实际开发中灵活运用这些概念。

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

    说实话今天才知道float和absolute是脱离了标准文档流的,之前在学“子绝父相”的时候一直以为relative是脱离了标准文档流,后来知道其实absolute是以它的最近且定位(position)了的父级容器,换言之,父级容器是absolute定位也OK,如果父级没定位就看爷级(笑),都没定位才轮到body。

说重点,今天了解了一下两个块级元素在采用float、absolute、relative这些时的位置覆盖情况。

首先,我创建两个div:

	<body>
		<div class="red">
			
		</div>
		<div class="blue">
		
		</div>
	</body>

并设置一下它们的样式:

.red {
	width: 20%;
	height: 2rem;
	background-color: red;
}
.blue {
	width: 80%;
	height: 4rem;
	background-color: blue;
}

就是这个样子:


float和absolute是脱离了标准文档流的,那么这意味着什么呢?

第一步,把红块设置为float(我的测试就用left了),蓝块设置为relative,结果:


蓝块顶了上来,而且覆盖了红块

那如果,蓝块设置为static呢?(就是没设置嘛),结果:


蓝块虽然还是顶了上来,但这次是跑到下面去了

我把红块分别设置为relative/static,把蓝块设置为float,结果都是:


这样看来感觉float脱离标准文档流之后便“任人宰割”了呀,“顶别人顶不动,别人顶他随便顶”。


我又把以上测试中的float改为为同样脱离了标准文档流的absolute,结果一模一样,诶,果然是“好兄弟”。

但是这对好兄弟之间又会是怎样的情况呢?

首先,把红块设置为float,蓝块设置为absolute,结果:


蓝块顶了上来,而且覆盖了红块,“说好的兄弟呢?”

再把红块设置为absolute,蓝块设置为float,结果是:


蓝块顶了上来,但在红块的下面,“哈哈,我float也能顶你absolute”

如此看来float和absolute之间是“后来者顶上”,但一直是absolute盖过float。“兄(absolute)弟(float)内斗?”

总结出一个图:


图中如果上面的元素顶下面的就产生覆盖效果,下面的顶上面的就顶上去并置于下层。


以上都是不同定位之间的关系,相同之间的关系又会是怎样呢?

标准文档流里的就不说了,看看非标准文档流二位:

把红块和蓝块都设置为float(同样都是left),不用看,肯定是蓝块紧跟在红块右边,空间不够就下一行,不存在什么“顶”和覆盖

但是把红块和蓝块设置为absolute,就不同了:


把蓝块调到红块前面试试:


可见absolute与absolute之间是后来者居上。(这个测试纯属闲的无聊测得,对于absolute,一般都会给它定位写一下,设置个合适的位置就是喽。)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值