BFC 的作用以及原理介绍

html-css018

BFC 的作用以及原理介绍,第1张

最近无意间看到很多文章写overflow: hidden可以清除浮动,但大多并没有说明其原理。这里就介绍一下BFC。平时会利用BFC解决一些如清浮动,防止 margin 重叠等问题,但是BFC具体是什么,就感觉只可意会不可言传了,于是特地花了半天时间,查阅了一些资料和文章,记录一下自己的学习过程(其实在 《CSS盒子模型》 一文中已经提及一些知识,为了方便,这里特地重新开一篇文章,方便以后查阅)。

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

Box 是 CSS 布局的对象和基本单位,一个页面是由很多个 Box 组成的。元素的类型和 display 属性,决定了这个 Box 的类型。 不同类型的 Box, 会参与不同的 Formatting Context(一个决定如何渲染文档的容器),因此Box内的元素会以不同的方式渲染。让我们看看有哪些盒子:

block-level box:display 属性为 block, list-item, table 的元素,会生成 block-level box。并且参与 block fomatting context;

inline-level box:display 属性为 inline, inline-block, inline-table 的元素,会生成 inline-level box。并且参与 inline formatting context;

Formatting context 是 W3C CSS2.1 规范中的一个概念。它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。最常见的 Formatting context 有 Block fomatting context (简称BFC)和 Inline formatting context (简称IFC)。

1.根元素

2.float属性不为none

3.position为absolute或fixed

4.display为inline-block, table-cell, table-caption, flex, inline-flex

5.overflow不为visible

根据第二部分的BFC布局规则第四个,我们只要让child2成为BCF就可以和child1不重叠;再根据第三部分生成BFC的元素的条件,可以为child2设置 display也可以设置overflow等等,可以达到如下图效果

达到了我们希望的自适应两栏布局。

到这里应该知道为什么overflow: hidden可以清除浮动;

第二本部分BFC布局规则第六:计算BFC的高度时,浮动元素也参与计算;

第三部分生成BFC的元素的条件第五:overflow不为visible。

具体例子可以参考我的这篇 《常见的清除浮动方法》 。

根据BFC布局规则第二:Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠。让child2和child3为不同的BFC的box就不会重叠了。

其实以上的几个例子都体现了BFC布局规则第五条:BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。

CSS就是为HTML里的标签做样式,达到你想要的效果。

像<head><body>这些标签是你在新建html文件时,会自动产生的,所以你要是在dreamweaver里编辑的话就不需要记了。

像div,p,ul这些标签的话,你也不要死记,你知道它们的作用就可以了。

要写CSS就是要写标签的属性,你自己在做的时候,想要什麼效果,自然就会想到哪条属性,这些属性像padding,margin,border之类的都是通俗易懂的。

其实学这个主要是要多练习,开始你是要把基础知识了解好,多练习书上例子,先照书上做了,然后再自己做一遍。在网上看到什麼效果,尝试著去做。不懂的就可以摆渡上问问,前提是自己要多多思考。

最恼火的就是浏览器的兼容问题,这个你可以在网上找找有很多相关的。做得多了,其实问题就那几个,熟了就明白了。

多练习是最好的学习!

并不是某个固定的灭火器,而是灭火器英文简写名称为BCF。

灭火器是一种可携式灭火工具。灭火器内放置化学物品,用以救灭火灾。灭火器是常见的防火设施之一,存放在公众场所或可能发生火灾的地方,不同种类的灭火器内装填的成分不一样,是专为不同的火灾起因而设。使用时必须注意以免产生反效果及引起危险。

二氧化碳灭火器:

原理:灭火器瓶体内贮存液态二氧化碳,工作时,当压下瓶阀的压把时。内部的二氧化碳灭火剂便由虹吸管经过瓶阀到喷筒喷出,使燃烧区氧的浓度迅速下降。

当二氧化碳达到足够浓度时火焰会窒息而熄灭,同时由于液态二氧化碳会迅速气化,在很短的时间内吸收大量的热量,因此对燃烧物起到一定的冷却作用,也有助于灭火。推车式二氧化碳灭火器主要由瓶体、器头总成、喷管总成、车架总成等几在部分组成,内装的灭火剂为液态二氧化碳灭火剂。

结构:二氧化碳灭火器筒体采用优质合金钢经特殊工艺加工而成,重量比碳钢减少了40%。具有操作方便、安全可靠、易于保存、轻便美观等特点。

适用场合:适用于扑救易燃液体及气体的初起火灾,也可扑救带电设备的火灾。常应用于实验室、计算机房、变配电所,以及对精密电子仪器、贵重设备或物品维护要求较高的场所。