Css 外边距折叠(collapsed margin ) 浅析_html/css_WEB-ITnose
Css 外边距折叠(collapses margin )
a.先来看看w3c 文档对于外边距折叠的定义:
In CSS, the adjoining margins of two or more boxes (which might or might not be siblings) can combine to form a single margin. Margins that combine this way are said to collapse, and the resulting combined margin is called a collapsed margin.
翻译一下:在Css中,相邻盒子(有可能是同辈元素,也可能不是)的外边距可以合并成为一个外边距。 外边距的这种合并方式称为 折叠,这种合并过的外边距称为 外边距折叠。
举个例子:
<style type="text/css">.testBFC{ width:100px; height:100px; background-color:green;}.testBFC div{ width:30px; height:30px; background-color:pink; }.testBFC div:first-child{ margin-bottom:10px;}.testBFC div:last-child{ margin-top:10px;}</style><div class="testBFC"> <div>div1</div> <div>div2</div></div>
运行结果如下图。从图中我们可以看出来,div1 的margin-bottom和 div2 的margin-top 合并了,结果 div1和div2 之间只有10px。我们本来是要他们之间间隔20px,如何实现呢?可以给div1 的class中添加:display:inline-block。 这就涉及到如何解决或避免外边距折叠的问题了。
下面来看看w3c文档的具体注意事项:
Note the above rules imply that:
1. 浮动的盒子和其它盒子之间不会发生折叠。(甚至 浮动的盒子和它的正常流中子元素之间 也不会 发生折叠). 举个例子,下面例子中 父元素 和子元素 之间 会发生外边缘折叠,这时可以父元素或子元素 设置成浮动,就可以显示正常。
<head> <style type="text/css"> *{ margin:0; padding:0; } .testBFC{ width:100px; height:100px; background-color:green; margin-top:10px; } .testBFC div{ width:30px; height:30px; background-color:pink; } .testBFC div:first-child{ margin-top:10px; } </style></head><body><div class="testBFC"> <div>div1</div></div></body>
2. 为元素的外边距 建立一个新的 block formatting contexts(块级格式上下文),这样就不会和 它的正常流中的子元素发生折叠。如上面的例子中,可以在外面的div 添加一个属性overflow:hidden
3. 绝对定位的盒子不会发生折叠。上面的例子中,可以给父元素或者子元素 添加属性:position:absolute 或者 fixed.
4. 在一个正常的文档流中,块级元素的底部外边距 回和它的后面的兄弟元素的 上边距发生折叠,除非 你设置了 clearance。见文章顶部的例子。
5. 块级元素的 top margin 会和它的第一个块级元素的子元素的 top margin 发生外边距折叠,如果这个块级元素没有设置 top border, no top padding ,子元素没有设clearance. 举例:tip 1 中已经有了这个例子。
6. 块级元素的bottom margin 有可能会和它的最后一个块级子元素的 bottom margin 发生外边距折叠,如果 这个块级元素没有设置 bottom padding,bottom border 并且 height:auto, min-height:0
7. 这样的盒子会外边距折叠 , min-height:0, 并且没有设置 top or bottom borders 或者 top or bottom padding, 并且height:0 or auto 并且它不包含 line box 并且 它所有的子元素外边距折叠。
详细信息请参考w3c文档: http://www.w3.org/TR/CSS2/box.html#collapsing-margins

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

本文讨论了HTML&lt; Progress&gt;元素,其目的,样式和与&lt; meter&gt;元素。主要重点是使用&lt; progress&gt;为了完成任务和LT;仪表&gt;对于stati

本文讨论了html&lt; datalist&gt;元素,通过提供自动完整建议,改善用户体验并减少错误来增强表格。Character计数:159

本文讨论了HTML&lt; meter&gt;元素,用于在一个范围内显示标量或分数值及其在Web开发中的常见应用。它区分了&lt; meter&gt;从&lt; progress&gt;和前

本文讨论了使用HTML5表单验证属性,例如必需的,图案,最小,最大和长度限制,以直接在浏览器中验证用户输入。

本文解释了HTML5&lt; time&gt;语义日期/时间表示的元素。 它强调了DateTime属性对机器可读性(ISO 8601格式)的重要性,并在人类可读文本旁边,增强Accessibilit

本文讨论了视口元标签,这对于移动设备上的响应式Web设计至关重要。它解释了如何正确使用确保最佳的内容缩放和用户交互,而滥用可能会导致设计和可访问性问题。

本文讨论了&lt; iframe&gt;将外部内容嵌入网页,其常见用途,安全风险以及诸如对象标签和API等替代方案的目的。
