CSS 外边距合并

基础讲解可参见

http://www.w3school.com.cn/css/css_margin_collapsing.asp

外边距合并(叠加)是一个相当简单的概念。但是,在实践中对网页进行布局时,它会造成许多混淆。

简单地说,外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。

当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并。请看下图:

当一个元素包含在另一个元素中时(假设没有内边距或边框把外边距分隔开),它们的上和/或下外边距也会发生合并。请看下图:

假设有一个空元素,它有外边距,但是没有边框或填充。在这种情况下,上外边距与下外边距就碰到了一起,它们会发生合并:

外边距合并时递归的,如果这个外边距遇到另一个元素的外边距,它还会发生合并:

这就是一系列的段落元素占用空间非常小的原因,因为它们的所有外边距都合并到一起,形成了一个小的外边距。

外边距合并初看上去可能有点奇怪,但是实际上,它是有意义的。以由几个段落组成的典型文本页面为例。第一个段落上面的空间等于段落的上外边距。如果没有外边距合并,后续所有段落之间的外边距都将是相邻上外边距和下外边距的和。这意味着段落之间的空间是页面顶部的两倍。如果发生外边距合并,段落之间的上外边距和下外边距就合并在一起,这样各处的距离就一致了。

注释:只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并。

应用:

一个元素包含另一个元素,如果不想要内部元素外边距被合并的效果,可以通过增加外部元素的内边距,增加外部元素的边框实现,如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>内部元素设置外边距</title>
    <style>

        #outer1{
            margin: 100px;
            background-color: #2dff65;
            width: 100px;
            height: 100px;
        }
        #inner1{
            background-color: #e26bcb;
            margin: 20px;/*内部元素设置外边距*/
            width: 60px;
            height: 60px;
        }
    </style>
</head>
<body>
    <div id="outer1">
        <div id="inner1">

        </div>
    </div>
</body>
</html>

上述代码为内部元素添加外边距,效果如下:内部元素外边距会被合并

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>外部元素设置内边距</title>
    <style>
        #outer1{
            margin: 100px;
            background-color: #2dff65;
            width: 100px;
            height: 100px;
            padding: 20px;/*外部元素设置内边距*/
        }
        #inner1{
            background-color: #e26bcb;
            margin: 10px;
            width: 80px;
            height: 80px;
        }
    </style>
</head>
<body>
    <div id="outer1">
        <div id="inner1">
        </div>
    </div>
</body>
</html>

上述代码为外部元素设置内边距,效果如下:内部元素的外边距没有被合并

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>外部元素设置边框</title>
    <style>
        #outer1{
            margin: 100px;
            background-color: #2dff65;
            border: 5px solid yellow; /*外部元素设置边框*/
            width: 100px;
            height: 100px;
        }
        #inner1{
            background-color: #e26bcb;
            margin: 10px;
            width: 80px;
            height: 80px;
        }
    </style>
</head>
<body>
    <div id="outer1">
        <div id="inner1">
        </div>
    </div>
</body>
</html>

上述代码为外部元素设置边框,效果如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>内部元素设置边框</title>
    <style>
        #outer1{
            margin: 100px;
            background-color: #2dff65;
            width: 100px;
            height: 100px;
        }
        #inner1{
            background-color: #e26bcb;
            margin: 10px;
            border: 5px solid #2032ff; /*内部元素设置边框*/
            width: 70px;
            height: 70px;
        }
    </style>
</head>
<body>
    <div id="outer1">
        <div id="inner1">
        </div>
    </div>
</body>
</html>

上述代码为内部元素设置边框,效果如下:内部元素的外边距还是会被合并

时间: 2024-10-11 12:46:48

CSS 外边距合并的相关文章

CSS外边距合并(折叠)问题。

CSS外边距合并 块级元素的上外边距和下外边距有时会合并(或折叠)为一个外边距,其大小取其中的最大值,这种行为称为外边距折叠(margin collapsing),有时也翻译为外边距合并.注意浮动元素和绝对定位元素的外边距不会折叠. 下面列出了会发生外边距折叠的三种基本情况: 相邻元素之间 毗邻的两个元素之间的外边距会折叠(除非后一个元素需要清除之前的浮动). 父元素与其第一个或最后一个子元素之间 如果在父元素与其第一个子元素之间不存在边框.内边距.行内内容,也没有创建块格式化上下文.或者清除浮

CSS 外边距合并。

<div id = "parent"> <div id = "child"> demo </div> </div> #parent { background: red; width: 200px; height: 200px; } #child { background: green; width: 50px; height: 50px; margin-top: 50px; } child的margin-top传递到了

CSS外边距合并(塌陷/margin越界)

原文 简书原文:https://www.jianshu.com/p/5f18f12cd162 大纲 1.什么是外边距合并?(折叠外边距) 2.外边距带来的影响 3.折叠的结果 4.产生折叠的原因 5.出现的情况 1.什么是外边距合并?(折叠外边距) 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者.而左右外边距不合并. 在CSS当中,相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距.这种

CSS外边距合并问题

今天无意中碰到了外边距合并的问题,于是便研究了一下.这里做个笔记. 所谓外边距合并,指的是当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者. 例如,这里有这样两个块元素: <div class="box1"></div> <div class="box2"></div> 这里给的样式是: .box1{ width:150px; height:150px; bac

CSS外边距合并

1 当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并. 2 当一个元素包含在另一个元素中时(假设没有内边距或边框把外边距分隔开),它们的上和/或下外边距也会发生合并.如果父元素有内边距,则子元素的外边距以父元素的内边距为准,不会发生外边距合并. 3 假设有一个空元素,它有外边距,但是没有边框或填充.在这种情况下,上外边距与下外边距就碰到了一起,它们会发生合并. 4 只有普通文档流中块框的垂直外边距才会发生外边距合并.行内框.浮动框或绝对定位之间的外边距不会合

CSS 定位 (Positioning) CSS 外边距合并 CSS 相对定位

CSS 定位 (Positioning) 属性允许你对元素进行定位. CSS 定位和浮动 CSS 为定位和浮动提供了一些属性,利用这些属性,可以建立列式布局,将布局的一部分与另一部分重叠,还可以完成多年来通常需要使用多个表格才能完成的任务. 定位的基本思想很简单,它允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素.另一个元素甚至浏览器窗口本身的位置.显然,这个功能非常强大,也很让人吃惊.要知道,用户代理对 CSS2 中定位的支持远胜于对其它方面的支持,对此不应感到奇怪. 另一方面

11 CSS外边距合并

原文地址:https://www.cnblogs.com/springsnow/p/9461780.html

[ css 外边距 margin ] css中margin外边距合并问题讲解及实例演示

外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距;合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者 外边距合并外边距合并(叠加)是一个相当简单的概念.但是,在实践中对网页进行布局时,它会造成许多混淆.简单地说,外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者.当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并.请看下图: CSS 外边距合并实例 1 亲自试一试

CSS框模型(框模型概述、内边距、边框、外边距、外边距合并)

CSS 框模型概述 CSS 框模型 (Box Model) 规定了元素框处理元素内容.内边距.边框 和 外边距 的方式. 元素框的最内部分是实际的内容,直接包围内容的是内边距.内边距呈现了元素的背景.内边距的边缘是边框.边框以外是外边距,外边距默认是透明的,因此不会遮挡其后的任何元素. 内边距.边框和外边距都是可选的,默认值是零.但是,许多元素将由用户代理样式表设置外边距和内边距.可以通过将元素的 margin 和 padding 设置为零来覆盖这些浏览器样式.这可以分别进行,也可以使用通用选择