CSS未解之谜

本文记录了一种在CSS布局中遇到的奇怪现象:当内层元素同时设置margin-left和margin-bottom时,margin-bottom表现出异常,仅显示一半的效果。通过调整margin-left的值,可以观察到margin-bottom的变化随之联动。这一现象与父容器的position属性和内层元素的margin-left值密切相关。

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

今天再帮同事调试一个样式的问题时,我发现了一个很神奇的现象,而其中的原由我个人却不得而知,现记录如下,待日后破解。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		.wrap{
			position: relative;
			height: 200px;
			width: 300px;
			background: yellow;
		}
		.inner{
			position: absolute;
			bottom: 0;
			height: 20px;
			left: 50%;			
			margin:0 auto;
			width: 60%;
			text-align: center;
			margin-left: -30%;
			margin-bottom: 20px;
			background: green;
		}
	</style>
</head>
<body>
	<div  class="wrap">
		<div class="inner">123</div>
	</div>
</body>
</html>

奇怪的样式表现如下
在这里插入图片描述
可以看到inner的margin-bottom只有一半,另一半神奇的消失了,改变margin-left的值,会发现margin-bottom一起变化,当margin-left为0时,表现如下
在这里插入图片描述
我们发现margin-bottom的表现又正常了,现在可以确定以下两点
1、该表现与父容器设置的position有关,因为当去除父容器时,这个神奇的表现消失了
2、该表现与inner设置的margin-left的值相关,可以明显的看到随着margin-left值的变化,margin-bottom的表现跟随着一起变化

欢迎各位路过的老铁指教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值