css垂直外边距重叠问题解决

垂直外边距重叠问题解决

什么是垂直外边距重叠

所谓垂直外边距重叠就是在网页中垂直方向的相邻外边距会发生重叠

我们看其中一种情况,两个div是兄弟元素的情况

在这里我设置了上面div的margin-bottom为100px,此时这种现象很正常,但是如果我再给下面这一个红色的div设置一个margin-top为100px,会发生什么呢?(如下图)

在这里插入图片描述

此时我们会发现两个div之间的间距竟然还是原来的样子(和上图一样),而没有改变,如果margin-top设置为200px呢?(如下图)

在这里插入图片描述

我们会发现他们的间距变为两百了,为什么当一个下外边距为100px,另一个上外边距也是100px,它们边距仍然是100px,这是因为它们两个发生了垂直外边距重叠问题,因此它们两个的距离将会是它们两个外边距的最大值,这也是为什么当下面的div的上外边距改为200px,它们的间距就变为200px的原因。

解决方法(我们想让它们是相加而不是取最大值)

思路:既然它是说垂直相邻,那么我们是不是只要让它们不相邻是不是就可以了!

解决方法:

1在两个块级元素之间加一个字母(副作用很明显)

所以一般我们是直接取最大值来达到我们的需求,而不使用这种方法

在这里插入图片描述

第二种情况(父子元素之间)

在这里插入图片描述

这种情况我们会发现我们想让box2在box1中向下移动100px,但是实际效果是这个margin-top传递给了它的父元素也就是box1,这也就是垂直外边距重叠带来的问题:子元素的外边距会传递给父元素。

解决方法

思路还是一样的

1:根据盒子模型我们可以轻易得出第一种方法:给box1加一个border-top

因为这样这个border就会隔开两个box(效果如下)

在这里插入图片描述

方法2给box1设置一个padding-top(也是根据盒子模型分析)

在这里插入图片描述

方法3:给box1加一个before伪类,并设置它的display为table并且content为空字符串(推荐)

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值