CSS 之 BFC

BFC 的概念:

BFC 直译为“块级格式化上下文”,它是一个独立的渲染区域,只有 Block-level-box 参与,它规定了独立的渲染区域内 Block-level-box 是如何布局的,并且这个独立区域与外部区域互不影响。

以下元素会触发 BFC:

1、根元素

2、float 属性不为 none 的元素

3、position 属性为 absolute 或 fixed 的元素

4、display 属性为 inline-block,table-cell,table-caption,flex,inline-flex 的元素

5、overflow 属性不为 visible 的元素

BFC 的布局规则:

1、独立渲染区域内的 Block-level-box 会在垂直方向上,一个接一个的排列;

2、Block-level-box 在垂直方向上的距离由 margin 决定,属于同一个 BFC 的两个相邻 Block-level-box 的 margin 会发生重叠;

3、每个 Block-level-box 的左外边距都会与独立渲染区域的左边框相重叠;

4、BFC 生成的独立渲染区域不会与 float box 相重叠;

5、计算独立渲染区域高度时,浮动元素也参与计算;

BFC 的作用:

1、清除浮动

2、防止 margin 重叠

3、多栏布局

1、清除浮动

具体示例:<div id="container">        <div class="item"></div>        <div class="item"></div></div>

#container {        border: 1px solid red;        width: 500px;}#container .item {        width: 200px;        height: 200px;        float: left;        border: 1px solid blue;}PS:在这种情况下 container 的高度不会被自动撑开;我们可以通过触发 container 生成 BFC,当 container 生成 BFC 后,浮动元素会参与高度的计算从而使 container 的高度自动撑开。#container {        width: 500px;        overflow: hidden;        border: 1px solid red;}

2、防止 margin 重叠

具体示例:<div class="item"></div><div class="item"></div>

 .item {        width: 200px;        height: 200px;        margin: 20px;        background: #000;}PS:两个块级元素垂直方向上的距离为 20px,即在垂直方向上块级元素的 margin 会发生重叠。属于同一个 BFC 的两个相邻 Block-level-box 的 margin 发生了重叠。我们可以在其中一个 div 的外面再包裹一层容器,并触发该容器生成一个 BFC。那么这两个 div 便不属于同一个 BFC 就不会发生 margin 重叠了。

<div id="container">        <div class="item"></div></div><div class="item"></div>#container {        overflow: hidden;        border: 1px solid red;} .item {        width: 200px;        height: 200px;        margin: 20px;        background: #000;}

3、多栏布局

具体示例:<div id="container">        <div class="left"></div>        <div class="right"></div></div>

#container {        width: 600px;        position: relative;}#container .left {        width: 200px;        height: 300px;        float: left;        background: red;}#container .right {        height: 400px;        background: bule;}PS:根据 BFC 布局规则:BFC 的区域不会与 float box 相重叠。所以我们可以通过触发右侧的 div 生成 BFC,来实现自适应两栏布局,即左栏宽度固定,右栏可以根据浏览器宽度自适应。#container .right {        height: 400px;        background: bule;        overflow: hidden;}

PS:在 CSS2 中有 BFC 和 IFC 的概念,CSS3 中新增了 FFC 和 GFC。

时间: 2024-10-11 10:01:32

CSS 之 BFC的相关文章

css规范 BFC

1.BFC的概念 BFC全称Block Formatting Context ,中文直译为块级格式上下文.它是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用.通俗的来说:BFC是一个独立的布局环境,我们可以理解为一个箱子(实际上是看不见摸不着的),箱子内部的元素无论如何翻江倒海,都不会影响到外部.转换为BFC的理解则是:BFC中的元素的布局是不受外界的影响(我们往往利用这个特性来消除浮动元素对其非浮动的兄弟元素和其子元素带来的影响.)

CSS篇——BFC与margin

首先FC: Formatting Context 指页面中的一个渲染区域,并且拥有一套渲染规则,他决定了其子元素如何定位,以及与其他元素的相互关系和作用. CSS2.1中有BFC(block)和IFC(Inline). BFC的布局规则: 内部的Box会在垂直方向,一个接一个地放置. Box垂直方向的距离由margin决定.属于同一个BFC的两个相邻Box的margin会发生重叠. 每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)

揭开CSS中BFC的面纱

引言: 这篇文章是我对BFC的理解及总结,带你揭开BFC的面纱.你将会知道BFC是什么,形成BFC的条件,BFC的相关特性,以及他的实际应用. 一.何为BFC BFC(Block Formatting Context)格式化上下文,是Web页面中盒模型布局的CSS渲染模式,指一个独立的渲染区域或者说是一个隔离的独立容器. 二.形成BFC的条件 1.浮动元素,float 除 none 以外的值:       2.定位元素,position(absolute,fixed):       3.disp

css之BFC和IFC

BFC BFC(Block Formatting Context)  ------ 块级格式化上下文 w3c规范定义:浮动元素和绝对定位元素,非块级盒子的块级容器(inline-blocks,table-cells,table-captions),以及overflow的值不为visiable的块级盒子,都会为它们的内容创建新的BFC 相关定义: block-level boxes(块级盒)------  一个 block-level element块级元素 ('display' 属性值为 'bl

css基础 BFC 不与浮动元素产生交集、自适应

礼悟:    公恒学思合行悟,尊师重道存感恩.叶见寻根三返一,江河湖海同一体.          虚怀若谷良心主,愿行无悔给最苦.读书锻炼养身心,诚劝且行且珍惜.              ide:visual studio 2017             browser:Chrome                     os:win7 代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8&qu

css基础 BFC 解决div块外边距合并问题

礼悟:    公恒学思合行悟,尊师重道存感恩.叶见寻根三返一,江河湖海同一体.          虚怀若谷良心主,愿行无悔给最苦.读书锻炼养身心,诚劝且行且珍惜.              ide:visual studio 2017             browser:Chrome                     os:win7 代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8&qu

浏览器的差距、ie6 ie7 ie8、符号、html css、BFC、

1.浏览器的差距 浏览器默认的字体是16px,谷歌的最小字体是12px,其他是10px 2.ie6.ie7.ie8. hack:就是针对不同的浏览器去不同的html,css样式,从而让各个浏览器能达到一致的渲染效果 html的hack:写在html的标签中 css的hack:写在css的样式中 3.符号 &it:< &ite; <= > > &gte; >= 4.html   hack的写法 (1).<!--[if  ite  ie8]>

【HTML/CSS】BFC

块格式化上下文(Block formatting contexts) BFC是什么? 是Web页面中盒模型布局的CSS渲染模式.它的定位体系属于常规文档流. 至少满足条件之一: float 的值不为 none position 的值不为 static 或者 relative display 的值为 table-cell , table-caption , inline-block , flex , 或者 inline-flex 中的其中一个 overflow 的值不为 visible 创建时可能

CSS之BFC

BFC(Block Formatting Context,块格式上下文) 具有BFC特性的元素能够看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素. 在CSS3中.BFC叫做Flow Root. 在CSS2.1中.有三种定位方案--普通流(Normal Flow),浮动(Float)和绝对定位(Absolute Positioning). (1)怎样触发BFC? 下列情况将创建一个BFC环境: (a)浮动(元素的float非none) (b)绝对定位元素(元素的position