margin 重叠

margin 重叠

外边距重叠是发生在垂直方向,而不是水平方向。初衷是为了段落美观。

发生在块级元素上,不是行内,也不是行内块上。

如何重叠

块的上下外边距有时会合并为单个边距,其大小为单个边距的最大值。边距折叠。

产生的方式

有三种情况

同一层项链元素之间

相邻的两个元素之间的外边距重叠.


p:nth-child(1) {
    margin-bottom: 13px;
}
p:nth-child(2) {
    margin-top: 87px;
}

会选用 87px 作为两个块之间的外边距.

::: tip 解决方案。

给后一个元素添加 清除浮动.

p:nth-child(2)::after {
    content: "";
    display: block;
    clear: both;
}

:::

空的块级元素

当一个块元素上边界 margin-top 直接贴到元素下边界 margin-bottom 时也会发生边界重叠.

p {margin: 0};
div {margin-top: 30px; margin-bottom: 50px};

<p>上边界</p>
<div></div>
<p>下边界</p>

::: tip 解决方案
解决方案。
给空块添加边框、内边距、高度、最小高度、最大高度、设定内容为 inline 或是加上 clear-fix。
:::

这种会渲染为 50px 的外边距,但是它的 盒模型还是 80px; <p>下边界</p>会顶上去。

没有内容

块级元素的上边界 margin-top 与其内一个或多个后代块级元素的上边界 margin-top. 会造成 margin 重叠。

section {margin-top: 13px};
header {margin-top: 87px};
<section>
    <header>上边界重叠87px</header>
</section>

最终将会使得 section 的 margin-top 也会下到 87px 的位置。

::: tip 解决方案。
加边框、内边距、行内内容,或者创建块级格式上下文或清除浮动 来达到分开块上边界 margin-top 与后代的 margin-top;
:::

一个块级元素的下边界 margin-bottom 与其内的一个或多个后代元素的上下边界 margin-bottom ,会出现父和子的 margin 重叠。重叠部分会益处到父块的外面。

section {margin-bottom: 87px;}
footer {margin-bottom: 13px;}

<section>
    <footer>下边界 87</footer>
</section>

后代元素 footer 是 13px, section 87px , 最终会合并为 87px.

::: tip 解决方案。
加边框、内边距、行内内容,高度、最小高度或最大高度来分开块元素的下边界 margin-bottom 和子元素的 margin-bottom.
:::

注意

  1. 设有 float 的元素不会产生外边距重叠的行为。

  2. 设有 position: absolute; 的元素不会产生外边距重叠。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值