CSS margin合并

1.外边距合并

顶部外边距和底部外边距有时被组合(折叠)为单个外边距,其大小是组合到其中的最大外边距

2. 发生外边距合并的三种基本情况

  • 相邻的兄弟姐妹元素

<div id="margin_parent">
<div><b>父margin-top: 80px,子margin-top: 50px,则最后margin-top为80px</b></div>
</div>

CSS

#margin_parent{
    width: 200px;
    height: 200px;
    background-color: green;
    margin-top:80px;
}
#margin_parent div{
    width: 200px;
    height: 200px;
    background-color: yellow;
    margin-top:50px;
    opacity: 0.5;
}

  • 块级父元素与其第一个/最后一个子元素

margin-top:块级父元素和其第一个子元素会发生上外边距合并

margin-bottom:块级父元素与它的最后一个子元素会发生下边距合并,要求:父元素没有border、padding、inline content、height、min-height、max-height等

<div id="margin_parent">
<div><b>父margin-top: 80px,子margin-top: 50px,则最后margin-top为80px</b></div>
</div>

CSS

#margin_parent{
    width: 200px;
    height: 200px;
    background-color: green;
    margin-top:80px;
}
#margin_parent div{
    width: 200px;
    height: 200px;
    background-color: yellow;
    margin-top:50px;
    opacity: 0.5;
}

  • 空块元素

如果存在一个空的块级元素,其border、padding、inline content、height、min-height都不存在。那么此时它的上下边距中间将没有任何阻隔,此时它的上下外边距将会合并

<p style="margin-bottom: 0px;background-color:green;">这个段落的和下面段落的距离将为50px</p>
<div style="margin-top: 50px; margin-bottom: 50px;"></div>
<p style="margin-top: 0px;background-color:green;">中间div的设置margin-top: 50px; margin-bottom: 50px;<br/>两个会折叠成一个50px</p>

 

参考

https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Box_Model/Mastering_margin_collapsing

时间: 2024-12-28 15:23:40

CSS margin合并的相关文章

须知的css——margin不重叠的情形

margin重叠 摘自css2.1规范中文版 CSS中,两个或者多个盒(可能但不一定是兄弟)的相邻的margin会被结合成一个margin.Margin按这种方式结合叫重叠(collapse),产生的结合的margin叫做重叠margin. margin重叠的计算规则 摘自css2.1规范中文版 当两个或者更多的margin合并时,产生的margin宽度为合并margin宽度中的最大值.至于负margin,就从正相邻margin的最大值中减去负相邻margin的绝对值的最大值.如果没有正marg

margin collpase(margin合并)小结

一.前言 标题的margin collpase(margin 合并),江湖又成"margin 塌陷":以前对margin 合并的理解就是在紧邻的兄弟元素中上一个的margin-bottom会和下一个的margin-top合并:紧邻父子元素,margin-top会合并:然后,就没有然后了.直到实际项目中,看到已有项目中存在父子margin没有合并的现象,但是自己又理解不了的时候,才人认真的将w3c中有关margin合并的规则看一遍. 二.margin collpase margin co

解决margin塌陷和margin合并

<!doctype html> <html> <head> <meta charset="UTF-8"> <title>嘿嘿嘿</title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no,

HTML CSS——margin和padding的学习

你在学习margin和padding的时候是不是懵了,——什么他娘的内边距,什么他娘的外边距.呵呵呵,刚开始我也有点不理解,后来通过查资料学习总算弄明白了,现在我来谈一下自己对margin和padding的理解: 一.什么是边距 CSS中的边距指的是当前元素border与周围其它元素border的距离(或者称为空间). 二.什么是内边距,什么是外边距 代码2-1: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" &

HTML CSS——margin与padding的初学

下文引自HTML CSS——margin和padding的学习,作者fengyv,不过加入了一些个人的看法. 你在学习margin和padding的时候是不是懵了,——什么他娘的内边距,什么他娘的外边距.呵呵呵,刚开始我也有点不理解,后来通过查资料学习总算弄明白了,现在我来谈一下自己对margin和padding的理解: 一.什么是边距 CSS中的边距指的是当前元素border与周围其它元素border的距离(或者称为空间). 二.什么是内边距,什么是外边距.(用代码来说明) <!DOCTYPE

CSS margin属性取值

margin表示一个元素的外边距.取值为正值时,表示相对于正常流离邻近元素更远,而取负值时,使其更近 但是,设置margin后,四个方向的表现形式不同 自身发生移动:top.left margin-top <div id="negtive_top"> <div>margin-top: -50px;自身向上移动50px</div> </div> CSS #negtive_top{ background-color: green; borde

细说 CSS margin

作者:https://coding.net/u/zhengkenghong原文:https://blog.coding.net/blog/css-margin 本文着重描述关于 margin,我们日常不太容易发现的“坑”. 盒模型 接触过 CSS 的人应该都知道 CSS 的盒模型: 由内容边缘(Content edge)包围形成的是内容盒(Content Box),类推还有内边距盒(Padding Box).边框盒(Border Box).外边距盒(Margin Box).其中内容盒.内边距盒.

CSS Margin(外边距)

CSS Margin(外边距)属性定义元素周围的空间. Margin margin清除周围的元素(外边框)的区域.margin没有背景颜色,是完全透明的 margin可以单独改变元素的上,下,左,右边距.也可以一次改变所有的属性. 可能的值 值 说明 auto 设置浏览器边距.这样做的结果会依赖于浏览器 length 定义一个固定的margin(使用像素,pt,em等) % 定义一个使用百分比的边距  Margin可以使用负值,重叠的内容. 在CSS中,它可以指定不同的侧面不同的边距: 实例 m

CSS margin 属性

实例 设置 p 元素的 4 个外边距: p { margin:2cm 4cm 3cm 4cm; } 定义和用法 margin 简写属性在一个声明中设置所有外边距属性.该属性可以有 1 到 4 个值. 说明 这个简写属性设置一个元素所有外边距的宽度,或者设置各边上外边距的宽度. 块级元素的垂直相邻外边距会合并,而行内元素实际上不占上下外边距.行内元素的的左右外边距不会合并.同样地,浮动元素的外边距也不会合并.允许指定负的外边距值,不过使用时要小心. 注释:允许使用负值. 例子 1 margin:1