解决!外边距合并-嵌套块元素塌陷

什么时候会出现外边距合并的现象呢?
两个嵌套关系的块元素,如果父元素和子元素都有垂直外边距,那么父元素会塌陷外边距较大的值,这种现象也就是嵌套块元素塌陷。
在这里插入图片描述

演示一下,我们定义两个嵌套关系的块元素,父元素贴着浏览器上边,子元素贴着父元素上边

    <style>
        body {
            margin: 0;
        }
        
        .dad {
            width: 300px;
            height: 300px;
            background-color: pink;
        }
        
        .son {
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>

	<body>
	    <div class="dad">
	        <div class="son"></div>
	    </div>
	</body>

在这里插入图片描述
这时如果我们希望父元素可以距离可视区上边有点距离,不要贴着,我们给父元素加上margin-top: 50px,父元素就带着子元素一起塌下来

	.dad {
            width: 300px;
            height: 300px;
            background-color: pink;
            /* 上边距 */
            margin-top: 50px;
        }

在这里插入图片描述
但是我们也希望子元素可以不要贴着父元素上边,也希望可以离父元素上有点距离,我们个子元素加上margin-top: 100px,出现了!

	.son {
            width: 100px;
            height: 100px;
            background-color: red;
            /* 上边距100px */
            margin-top: 100px;  
        }

在这里插入图片描述
效果不是我们希望的,而且父元素带着子元素一起向下塌陷了100px,也就是塌陷较大的margin-top值。

在实际开发中,我们避免不了这样的需求,在很多情况下我们都会有嵌套块元素都有margin-top的需求,那我们该怎么解决呢?

结局方案:

  1. 给父元素上边框
  2. 给父元素内边距
  3. 给父元素添加overflow: hidden

1.给父元素上边框
如果不想影响外观,可以定义透明的上边框:

.dad {
            width: 300px;
            height: 300px;
            background-color: pink;
            margin-top: 50px;
            /* 定义透明的上边框 */
            border-top: 1px solid transparent;
        }
        
        .son {
            width: 100px;
            height: 100px;
            background-color: red;
            margin-top: 100px;
        }

在这里插入图片描述
此方案会改变父盒子的大小,不太推荐

2. 给父元素内边距

.dad {
            width: 300px;
            height: 300px;
            background-color: pink;
            margin-top: 50px;
            /* 定义1px的内边距 */
            padding: 1px;
        }
        
        .son {
            width: 100px;
            height: 100px;
            background-color: red;
            margin-top: 100px;
        }

在这里插入图片描述
此方法也会改变父元素的大小,也不推荐。

3.给父元素添加overflow: hidden

.dad {
            width: 300px;
            height: 300px;
            background-color: pink;
            margin-top: 50px;
            overflow: hidden;
        }
        
        .son {
            width: 100px;
            height: 100px;
            background-color: red;
            margin-top: 100px;
        }

在这里插入图片描述
这个方法不仅能满足我们的需求,也不会改变父元素的大小,推荐使用。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值