margin外边距合并详解

margin外边距合并详解:

外边距合并现象在网页布局中非常的常见,必须对此有明确的把我,以此做到未雨绸缪,否则可能影响工作效率,甚至严重阻碍项目的进度。在网络上已经有大量的相关文章,下面再通过实例结合对网络教材的总结,再来介绍一下外边距合并现象。

概念:

相邻的两个或者多个外边距在垂直方向上合并成一个外边距,这就是所谓的外边距合并。

水平方向不存在此现象。

外边距合并产生条件:

1.相邻的外边距之间没有非空内容、padding和border和clear分隔。

2.对象都处于文档流中,即非浮动和position属性值不为absolute和fixed的元素。

合并可以存在于兄弟对象之间,也可以存在于父子对象之间,下面就分开介绍一下:

一.兄弟对象之间的外边距合并:

实例如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="http://www.51texiao.cn/" />
<title>蚂蚁部落</title>
<style type="text/css">
div{
  width:100px;
  height:100px;
}
.top{
  background-color:green;
  margin-bottom:20px;
}
.bottom{
  background-color:red;
  margin-top:10px;
}
</style>
</head>
<body>
  <div class="top"></div>
  <div class="bottom"></div>
</body>
</html>

以上代码的表现可以看出bottom元素的上边距和top元素的下边距产生合并现象,也就是两个元素垂直间距是20px,而不是20px+10px=30px。可以看出两个外边距的值取较大者。再来看一段代码实例:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="http://www.51texiao.cn/" />
<title>蚂蚁部落</title>
<style type="text/css">
div{
  width:100px;
  height:100px;
}
.top{
  background-color:green;
  margin-bottom:-20px;
}
.bottom{
  background-color:red;
  margin-top:10px;
  position:relative;
  left:20px;
}
</style>
</head>
<body>
  <div class="top"></div>
  <div class="bottom"></div>
</body>
</html>

如果外边距有正有负,那么就选取最大值正直和最小的负值相加,得出的即是两个两个边距合并的值。再看一段实例代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="http://www.51texiao.cn/" />
<title>蚂蚁部落</title>
<style type="text/css">
div{
  width:100px;
  height:100px;
}
.top{
  background-color:green;
  margin-bottom:-20px;
}
.bottom{
  background-color:red;
  margin-top:-10px;
  position:relative;
  left:20px;
}
</style>
</head>
<body>
  <div class="top"></div>
  <div class="bottom"></div>
</body>
</html>

如果对象的外边距都是负数,那么取最小的负数作为外边距。

二.父子外边距合并:

先看一段代码实例:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="http://www.51texiao.cn/" />
<title>蚂蚁部落</title>
<style type="text/css">
#parent{
  width:200px;
  height:200px;
  background-color:red;
}
#children{
  width:60px;
  height:60px;
  background-color:green;
  margin:0px auto;
  margin-top:50px;
}
</style>
</head>
<body>
<div id="parent">
  <div id="children"></div>
</div>
</body>
</html>

在以上代码中,出现了外边距和并现象,这时,子元素的外边距并不作用于父元素,而是作用于父元素之外的对象。父子外边距合并不但要满足在文章开始介绍的两条外边距合并条,而且还要满足父元素中不能够有上下文布局属性,例如不能具有overflow(除visible)或者display:inline-block等属性。

特别说明:

以上介绍的外边距合并实例都是只涉及到两个对象,因为这在实际应用中是最常见的情况,但是外边距合并现象并非只局限于两个对象之间,只要满足外边距合并的条件就可以出现外边距合并现象,代码实例如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="http://www.51texiao.cn/" />
<title>外边距合并-蚂蚁部落</title>
<style type="text/css"></style>
</head>
<body>
<div style="border:1px solid red;width:200px;">
<div style="margin-top:50px; background-color:green;">
  <div style="margin-top:-50px;">
    <div style="margin-top:150px;">蚂蚁部落</div>
  </div>
</div>
</div>
</body>
</html>

在以上代码中,三个外边距出现合并现象。需要特别注意的是,计算合并后外边距值的方式并非是一层一层计算的,而是遵循在上面介绍的几个原则,那么上面的合并方式就是从负值值挑选最小的和从正值挑选的最大的相加,也就是-50px+150px=100px。
还有一种比较极端的合并方式:元素本身的外边距也会合并,代码实例如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="http://www.51texiao.cn/" />
<title>蚂蚁部落</title>
<style type="text/css"></style>
</head>
<body>
<div style="border:1px solid red;width:200px;">
  <div style="margin-bottom:50px;margin-top:50px;"></div>
</div>
</body>
</html>

由以上代码的运行结果可以看出,自身的外边距产生了合并现象,但是此div不能够具有高度和内容等等,因为这样上下外边距就不相邻了,外边距合并的条件就不具备了。

原文地址是:http://www.51texiao.cn/div_cssjiaocheng/2015/0501/510.html

时间: 2024-10-19 16:41:02

margin外边距合并详解的相关文章

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

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

转载:margin外边距合并问题以及解决方式

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style type="text/css"> .div{ /* overflow: hidden/auto;*//*利用该属性或者通过给父级元素设置border可以避免出现父级元素的margin合

外边距合并

前提 只有在普通文档流中垂直相邻外边距会合并. 行内框,浮动框或者绝对定位之间的外边距不会合并. 1.相邻元素有多个外边距 1 <ul> 2 <li>line 1</li> 3 <li>line 2</li> 4 </ul> 5 <h3>This is h3 line.</h3> 1 ul{margin-bottom:15px;} 2 li{margin-top:10px;margin-bottom:20px;

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

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

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

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

CSS中的外边距合并问题

w3school中给出的合并定义为:         外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.         合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者. 此处的“垂直外边距”一词,个人认为不太容易理解. 因为从网页上看来,top margin与bottom margin是平行的,left margin与right margin是平行的,又何来合并一说? 但其所谓的“垂直”,可直接理解为上下两个外边距(此处为个人理解). 因为就其实际合并情况考虑,只有

Collapsing margins(外边距合并)

开篇 块元素的上边距或下边距有时会合并为一个margin,这种情况称之为外边距的合并,即collapsing margins. 一个常见的css样式的bug html&css: <!DOCTYPE html> <html> <style type="text/css"> html, body{ width: 100%; height: 100%; padding: 0; margin: 0; } #main { width: 200px; h

外边距合并现象

外边距(外填充)合并现象: 定义:外边距合并指的是,当两个垂直外边距相遇时,它们将合并形成一个外边距. 1.两个层是上下排列关系的时候: ? 当一个元素包含在另一个元素中时(假设没有内边距或边框把外边距分隔开),它们的两个上和下外边距也会发生合并.请看下图: ? 注释:只有普通文档流中块框的垂直外边距才会发生外边距合并.行内框.浮动框或绝对定位之间的外边距不会合并. 举例: 在垂直方向看,当给两个层(div1,div2)设置外边距, 比如:margin-top的时候,(div1:20px,div

CSS基础学习十五:盒子模型补充之外边距合并

今天继续接着CSS盒子模型补充,CSS基础学习十三:盒子模型和CSS基础学习十四:盒子模型补充之display属 性设置都是介绍了盒子模型中的内容概括.开始今天的主题:外边距合并. 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合 并的外边距的高度中的较大者. (1)外边距合并 外边距合并叠加是一个相当简单的概念.但是,在实践中对网页进行布局时,它会造成许多混淆.简单地说,外 边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的