Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

解释一下BFC #156

Open
su37josephxia opened this issue Mar 22, 2022 · 4 comments
Open

解释一下BFC #156

su37josephxia opened this issue Mar 22, 2022 · 4 comments

Comments

@su37josephxia
Copy link
Owner

No description provided.

@RJM1996
Copy link

RJM1996 commented Mar 22, 2022

什么是 BFC

BFC 全称:Block Formatting Context (块级格式化上下文)= block-level box + Formatting Context

block-level box 即为块级元素,与之对应的即为行内元素 inline-level box

BFC 是一个独立的渲染区域,只有块级元素参与, 它规定了内部的块级元素如何布局,并且这个区域与外部完全隔离,不会互相影响

如何生成 BFC

CSS2.1 中规定满足下列 CSS 声明之一的元素会生成 BFC:

  • 根元素
  • float 的值不为 none
  • overflow 的值不为 visible
  • display 的值是 inline-block、flex、inline-flex、table-cell、table-caption
  • position 的值不是 static、relative

BFC 的布局规则

1、默认内部的块级元素会在垂直方向一个接一个地放置,每个块级元素独占一行

2、属于同一个 BFC 的两个相邻块级元素在垂直方向上的 margin 会发生重叠,以较大的那个为准,但水平方向的不会

3、BFC 的区域不会与 float 的元素区域重叠

4、计算 BFC 的高度时,内部浮动子元素也参与计算

BFC 的应用

1、防止两个块级元素的 margin 重叠:因为两个 BFC 区域互不影响

2、清除内部元素浮动:因为 BFC 区域计算高度时,内部浮动元素也参与计算

3、自适应两三栏布局:因为 BFC 的区域不会与 float 的元素区域重叠

总结

BFC 就是页面上一个完全隔离的独立容器,容器里的元素和外界不会互相影响。

@zcma11
Copy link

zcma11 commented Mar 22, 2022

bfc 会形成一个独立的块级区域,能够不与其他元素重叠,例如能够解决 margin 重叠的问题。bfc 的计算也包含浮动元素,所以bfc 也可以清除浮动导致的高度塌陷。

@7TingYu
Copy link

7TingYu commented Mar 22, 2022

BFC

块级格式化上下文

其有以下特点:

  • 独立渲染区域
  • 外部不影响内部
  • 内部不影响外部

4种情况可以形成BFC渲染区域

  • float的值不是none
  • position的值不是static或者relative。
  • display的值是inline-block、table-cell、flex、table-capttion或者inline-flex
  • overflow的值不是visible

@QbjGKNick
Copy link

什么是 BFC

BFC(Block Formatting Content) 块级格式化上下文,它是一个独立的渲染区域,只有 Block-level box 参与,它规定了内部的 Block-level box 如何布局,并且与这个区域外部毫不相干。

如何创建 BFC

  • float 的值不是 none;
  • position 的值不是 static 或者 relative;
  • display 的值是 inline-block、table-cell、flex、table-caption 或者 inline-flex
  • overflow 的值不是 visible

BFC 的作用

  • 利用 BFC 避免 margin 重叠
  • 清除浮动
  • 自适应两栏布局

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants