css之margin塌陷

一、margin塌陷的概念

margin塌陷是指在CSS布局中,当两个或多个元素的垂直margin(上外边距和下外边距)相遇时,它们不会按照预期叠加,而是会发生重叠,导致最终的外边距值比单独设置时小。这种现象主要发生在标准文档流中的垂直方向上,水平方向上的margin则不会发生塌陷。

二、代码演示

<!DOCTYPE html>  
<html lang="en">  
<head>  
<meta charset="UTF-8">  
<title>Margin Collapse Example</title>  
<style>  
    .parent {  
        background-color: lightblue;  
        width: 300px;  
        /* 注意:这里没有设置padding、border或overflow来避免margin塌陷 */  
    	}  
    .child {  
        background-color: pink;  
        width: 100%;  
        height: 100px;  
        margin-top: 20px; /* 这个margin-top会导致与父元素的顶部发生塌陷 */  
    }  
</style>  
</head>  
<body>  
		<div class="parent">  
		    <div class="child"></div>  
		</div>  
  	<p>注意:在这个例子中,由于margin塌陷,父元素和子元素一起向下移动了20px,而不是仅在子元素内部产生间距。</p>    
</body>  
</html>

三、效果图示描述

页面布局:页面上有一个蓝色的矩形(.parent),它内部有一个粉色的矩形(.child)。
margin塌陷效果:
预期效果:如果margin塌陷没有发生,你可能会期望粉色的.child元素在其顶部有20px的空白区域(即margin),这个空白区域只影响.child元素,.parent元素的顶部不会移动。
实际效果:由于margin塌陷,.child元素的margin-top: 20px;实际上导致了整个.parent元素向下移动了20px,使得.parent的顶部与页面顶部之间的间距增加了20px,而不是.child元素内部增加了20px的间距。粉色的.child元素看起来像是从.parent内部距离顶部20px的位置开始绘制,但实际上.parent的顶部已经随着.child的margin-top一起移动了。

四、解决后的效果

(假设给.parent添加了border: 1px solid #000;)
蓝色的.parent元素现在有一个黑色的边框,这个边框阻止了margin塌陷的发生。.child元素的margin-top现在正确地在其内部产生了20px的间距,而.parent元素的顶部没有移动。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜里都傻

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

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

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

打赏作者

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

抵扣说明:

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

余额充值