美文网首页
外边距合并和BFC那点事

外边距合并和BFC那点事

作者: 燃烧吧_小宇宙 | 来源:发表于2016-03-17 13:41 被阅读64次

边距合并

合并条件:

在常规文档流(非float和绝对定位)的块级盒子,处于同一个BFC当中。
没有线盒,没有空隙(clearance),没有padding和border将他们分隔开
都属于垂直方向上相邻的外边距。

如何合并:

1、必须是处于常规文档流(非float和绝对定位)的块级盒子,并且处于同一个BFC当中。

2、 没有线盒,没有空隙(clearance,下面会讲到),没有padding和border将他们分隔开。

3、都属于垂直方向上相邻的外边距,可以是下面任意一种情况 元素的margin-top与其第一个常规文档流的子元素的margin-top。

4、 元素的margin-bottom与其下一个常规文档流的兄弟元素的margin-top。

5、height为auto的元素的margin-bottom与其最后一个常规文档流的子元素的margin-bottom。

6、 高度为0并且最小高度也为0,不包含常规文档流的子元素,并且自身没有建立新的BFC的元素的margin-top和margin-bottom。


1.png

不发生折叠的规则:

1、创建了新的BFC的元素(例如浮动元素或者'overflow'值为'visible'以外的元素)与它的子元素的外边距不会折叠
浮动元素不与任何元素的外边距产生折叠(包括其父元素和子元素)

2.png

2、 绝对定位元素不与任何元素的外边距产生折叠。


3.png

3、inline-block元素不与任何元素的外边距产生折叠。


4.png

4、 一个常规文档流元素的margin-bottom与它下一个常规文档流的兄弟元素的margin-top会产生折叠,除非它们之间存在间隙(clearance)。
5、一个常规文档流元素的margin-top 与其第一个常规文档流的子元素的margin-top产生折叠,条件为父元素不包含 padding 和 border ,子元素不包含 clearance。


2.png

6、一个 'height' 为 'auto' 并且 'min-height' 为 '0'的常规文档流元素的 margin-bottom 会与其最后一个常规文档流子元素的 margin-bottom 折叠,条件为父元素不包含 padding 和 border ,子元素的 margin-bottom 不与包含 clearance 的 margin-top 折叠。

7、一个不包含border-top、border-bottom、padding-top、padding-bottom的常规文档流元素,并且其 'height' 为 0 或 'auto', 'min-height' 为 '0',其里面也不包含行盒(line box),其自身的 margin-top 和 margin-bottom 会折叠。

BFC定义(官网定义)

浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不为“visiable”的块级盒子,都会为他们的内容创建新的BFC(块级格式上下文)。

在BFC中,盒子从顶端开始垂直地一个接一个地排列,两个盒子之间的垂直的间隙是由他们的margin 值所决定的。在一个BFC中,两个相邻的块级盒子的垂直外边距会产生折叠。

在BFC中,每一个盒子的左外边缘(margin-left)会触碰到容器的左边缘(border-left)(对于从右到左的格式来说,则触碰到右边缘)。

自我定义

BFC就是一个盒子,装元素的盒子,BFC块级格式化上下文,从上到下,从左到右排列,每个BFC都是一个独立的布局。不受外面的元素影响,也不能影响外面的元素。

形成BFC:

1.overflow值:hidden/scroll/auto/inherit


23.png

2.display值: inline-blocks/ table-cells/ table-captions


1.png
3.float值:inherit(规定应该从父元素继承 float 属性的值。)/left/right
3.png

4.position值:absolute/fixed

作用:

防止margin重叠,用于浮动元素塌陷,撑开父容器的宽度。

相关文章

  • 外边距合并和BFC那点事

    边距合并 合并条件: 在常规文档流(非float和绝对定位)的块级盒子,处于同一个BFC当中。没有线盒,没有空隙(...

  • 外边距合并/BFC

    1.在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例 以下是 三种发生...

  • 边距合并和BFC

    首先明确边距合并是个什么问题。举例说明: 总结边距合并的三种情况(上图都已经有体现了): 当子元素和父元素垂直之间...

  • 外边距合并与BFC

    外边距合并## 块级元素的 上外边距(margin-top) 与 下外边距(margin-bottom) 有时会合...

  • 外边距折叠 margin合拼 原理

    外边距折叠 margin合拼 外边距折叠(margin collapsing) 对于块级元素而言,其 上外边距 和...

  • margin(垂直外边距合并、margin负值)

    垂直外边距合并的问题 外边距合并出现的三个场景 同一个BFC,且同处于普通流中的垂直相邻元素外边距合并 父子元素的...

  • inline-block、BFC、边距合并

    外边距合并及破解方法 同一个BFC中常规文档流的两个在垂直方向“相邻”的块级盒子会出现外边距合并。 两个外边距都是...

  • css相关

    外边距叠加问题当两个外边距相遇时(中间没有border、padding等)凡是未形成块级格式化上下文(BFC)的盒...

  • inline-block、BFC、边距合并相关知识点

    一、在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例(一)出现外边距合...

  • 任务11- inline-block、BFC、边距合并

    问题 1. 在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例 外边距合...

网友评论

      本文标题:外边距合并和BFC那点事

      本文链接:https://www.haomeiwen.com/subject/kbrclttx.html