CSS 世界里的 margin 合并

3 篇文章 0 订阅

CSS 世界里的 margin 合并

margin 合并

块级元素的上外边距和下外边距有时会合并为单个外边距,这种现象称为 'margin 合并'。从此定义上,我们可以捕获亮点重要的信息

  1. 块级元素,但不包括浮动和绝对定位元素,尽管浮动和绝对定位可以让元素块状化
  2. 只发生在垂直方向,需要注意的是,这种说法是在不考虑 writing-mode 的情况下,当设置了 writing-mode 为 vertical-rl 的时候就改变了文档流的方向,此时就会发生水平方向的合并

margin 合并的 3 个场景

  1. 相邻兄弟元素 margin 合并。这是 margin 合并中最常见、最基本的。

  2. 父级和第一个/最后一个子元素的 margin 合并

  3. 空块级元素的 margin 合并

margin 合并的计算规则

  • 正正取大值

如果是兄弟相邻合并

.a{
    margin-bottom: 20px;
}
.b{
    margin-top: 20px;
}
<div class='a'></div>
<div class='b'></div>

此时,50px 比 20px 大,所以取 50px

如果是父子合并

.father{
    margin-top: 20px;
}
.son{
    margin-top: 50px;
}
<div class='father'>
    <div class='son'></div>
</div>

此时,.father 元素等同于设置了 margin-top: 50px,取最大的那个值

如果是空块级元素自身合并

.self{
    margin-top: 20px;
    margin-bottom: 50px;
}
<div class='self'></div>

此时,.self 取最大值 50px

  • 正负值相加

如果是兄弟相邻合并

.a{
    margin-bottom: 50px;
}
.b{
    margin-top: -20px;
}
<div class='a'></div>
<div class='b'></div>

此时,-20px + 50px = 30px ,所以 .a 和 .b 两个元素之间的距离是 30px

如果是父子合并

.father{
    margin-top: 50px;
}
.son{
    margin-top: -20px;
}
<div class='father'>
    <div class='son'></div>
</div>

此时,.father 元素等同于设置了 margin-top: 30px,取两者相加的值

如果是空块级元素自身合并

.self{
    margin-top: -20px;
    margin-bottom: 30px;
}
<div class='self'></div>

此时,.self 取两者相加的值 -20px + 30px = 10px

  • 负负最负值

如果是相邻兄弟合并

.a{
    margin-bottom: -30px;
}
.b{
    margin-top: -50px;
}
<div class='a'></div>
<div class='b'></div>

此时,-50px 比 -30px 小,所以取 -50px

如果是父子合并

.father{
    margin-top: -50px;
}
.son{
    margin-top: -20px;
}
<div class='father'>
    <div class='son'></div>
</div>

此时,.father 取最负值 -50px

如果是空块级元素自身合并

.self{
    margin-top: -20px;
    margin-bottom: -50px;
}
<div class='self'></div>

此时,.self 取最负值 -50px

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值