也说说外边距折叠

最开始学前端就听过“外边距折叠”这一专业名词,可是什么条件下会发生外边距折叠,后来有了说法,叫“只有处于同一个BFC的外边距会发生折叠(什么是BFC不在这节做讨论)”,那是不是只有这一种条件下外边距才不折叠呢?

研究css2.2中的box model关于Collapsing margins的讲解。

标准中,对外边距折叠是这么说的:

Adjoining vertical margins collapse, except:

  • Margins of the root element‘s box do not collapse.
  • If the top and bottom margins of an element with clearance are adjoining, its margins collapse with the adjoining margins of following siblings but that resulting margin does not collapse with the bottom margin of the parent block.
  • If the top margin of a box with non-zero computed ‘min-height‘ and ‘auto‘ computed ‘height‘ collapses with the bottom margin of its last in-flow child, then the child‘s bottom margin does not collapse with the parent‘s bottom margin.

只有垂直的相邻的外边距会产生折叠,除了上述三种情况(分析在后)。

垂直好理解,就是margin-top和margin-bottom,那么什么是相邻的margin呢?

标准中又有了解释:

要判断两个margin是否能够被称之为相邻,必须同时满足下边三个条件

1.两个外边距都属于流中的块级元素,并且处在同一个BFC中。这里不一定就是兄弟元素,父子元素也一样。

2.这两个外边距没有被行内盒子line-boxes、间隙clearance、内边距padding、边border分隔开。说白了就是两个边距之前没有任何其他东西。

3.这两个边距都必须属于垂直相邻的盒子外边距,分别属于以下四种情况中的一种:(1)父元素的top margin和该元素的第一个子元素。(2)元素的bottom margin和它紧邻的后一个兄弟元素的top margin。(3)元素的height为auto(就是不对高度进行设置)时,它的bottom margin和该元素内最后一个子元素的bottom margin。(4)元素内部没有任何子元素,高度设置为0或者auto,min-height的计算值为0,且自己并没有形成新的BFC,这种条件下该元素的top margin和bottom margin

时间: 2024-10-18 07:43:08

也说说外边距折叠的相关文章

Css 外边距折叠(collapsed margin ) 浅析

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

css中的margin及外边距折叠

平时在工作中,总是有一些元素之间的边距与设定的边距好像不一致的情况,一直没明白为什么,最近仔细研究了一下,发现里面有学问:垂直元素之间的margin有有互相重叠的情况:新建一个BFC后,会阻止元素与外界元素的重叠现象. 先了解几个概念:可替换元素.不可替换元素(non-replaced element).包含块(containing block).块级格式化上下文(BFC). 1.可替换元素与不可替换元素 根据css1 中所述:所谓可替换元素就是浏览器根据元素的标签和属性,来决定元素的具体显示内

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

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

CSS盒子模型中外边距(margin)折叠详解

最近写项目过程中遇到一个CSS盒子模型中外边距(margin)折叠的情况,搞得我焦头烂额,之后再网上查阅了大量的资料,现做一个整理和总结,方便以后忘记的时候查阅,同时也供广大网友参考.如有错误或者总结方面不全的地方,欢饮广大网友指出. 外边距折叠的概念:所谓外边距折叠就是相邻的两个或多个元素(含有子元素的情况)的外边距会在垂直方向上合并成一个一个外边距. CSS盒子模型中外边距(margin)折叠的常见情形有如下2种: 情况1.无子元素的相邻兄弟元素 触发margin折叠的条件:两个元素之间没有

CSS3与页面布局学习总结——Box Model、边距折叠、内联与块标签、CSSReset

目录 一.盒子模型(Box Model) 1.1.宽度测试 1.2.溢出测试 1.3.box-sizing属性 1.4.利用CSS画图 二.边距折叠 2.1.概要 2.2.垂直方向外边距合并计算 三.内联与块级标签 3.1.行内标签与块标签区别 3.2.隐藏 3.3.行内块标签 3.4.菜单示例 四.重置浏览器默认样式 4.1.CSSReset 4.1.1.MT css reset 4.1.2.PC css reset 4.1.3.PPTV css reset 4.1.4 YUI css res

CSS3与页面布局学习总结(二)——Box Model、边距折叠、内联与块标签、CSSReset

一.盒子模型(Box Model) 盒子模型也有人称为框模型,HTML中的多数元素都会在浏览器中生成一个矩形的区域,每个区域包含四个组成部分,从外向内依次是:外边距(Margin).边框(Border).内边距(Padding)和内容(Content),其实盒子模型有两种,分别是 ie 盒子模型和标准 w3c 盒子模型,加上了doctype声明,让所有浏览器都会采用标准 w3c 盒子模型去解释你的盒子.当设置一个元素的样式如下: <!DOCTYPE html> <html> <

CSS3(二)Box Model、边距折叠、内联与块标签、CSSReset

目录 一.盒子模型(Box Model) 1.1.宽度测试 1.2.溢出测试 1.3.box-sizing属性 1.4.利用CSS画图 二.边距折叠 2.1.概要 2.2.垂直方向外边距合并计算 三.内联与块级标签 3.1.行内标签与块标签区别 3.2.隐藏 3.3.行内块标签 3.4.菜单示例 四.重置浏览器默认样式 4.1.CSSReset 4.1.1.MT css reset 4.1.2.PC css reset 4.1.3.PPTV css reset 4.1.4 YUI css res

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

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

认识W3C标准盒子模型,理解外边距叠加

概述: 注:加粗斜体字是非常重要的概念,决定着你是不是能看懂那句话,所以不懂的请一定要搜索一下. 页面上的每个元素,都在一个矩形框里. 每个矩形框都是一个盒模型. 每个盒模型都由内容区域(content).边框(border ).内填充(padding)和外边距(margin)组成. 这四个属性都可以独立存在.也就是说,一个盒子可以只有content,也可以只有border,也可以只有padding,也可以只有margin. (图片来自网络) 关于margin: 可以有负值 Negative v