`
lllt
  • 浏览: 66143 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

块级格式化上下文 (block formatting contexts) 触发条件探讨

    博客分类:
  • css
阅读更多

 

Block Formatting Context (块格式化上下文)是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。

 

在创建了 Block Formatting Context 的元素中,其子元素会一个接一个地放置。垂直方向上他们的起点是一个包含块的顶部,两个相邻的元素之间的垂直距离取决于 'margin' 特性。在 Block Formatting Context 中相邻的块级元素的垂直边距会折叠(collapse)。

 

以上是关于BFC的相关概念和一点解释,引自:w3help

 

BFC的用处:

 

非 BFC 元素,会忽略其添加 float 的子元素的高度值;其上下边距会与子元素的边距产生折叠;其内、外部的float元素会对自身以及其子元素布局产生影响。

触发 BFC 是解决这三个问题的有效方式。这也就是为何可用overflow:hidden来清除浮动等问题的原因。

 

触发BFC的条件:

 

  1. "float"的值不是"none"
  2. "overflow"的值不是"visible"
  3. "display"的值是"table-cell"
  4. "table-caption",或"inline-block"
  5. "position"的值既不是"static"也不是"relative"
以上是网络上普遍的答案,但并未给出具体触发后相关元素的特点,以及该如何使用。

以下讨论均建立在下面的例子的基础上

<div id="c1"></div>
<div id="c2">
    <div id="c21">Text 1</div>
    <div id="c22">Text 2</div>
    <div id="c23">Text 3</div>
    <div id="c24">Text 4</div>
    <div id="c25">Text 5</div>
</div>
 
相关样式如下:
#c1{margin:20px;background:red;height:80px;width:30px;float:left;}
#c2{margin:20px;background:dimgray;}
#c21,#c22,#c23,#c24,#c25{margin:10px;background:green;width:100px;height:30px;}
#c22,#c24{background:gold;}
 
这段代码运行后,如下截图:


 
可发现,#c1 浮动影响到了 #c2 的文字布局,并且遮挡了 #c2 的部分区域

关于float触发

现对 #c2 添加 float 属性:float:left;

运行后,如下截图:



可发现,#c2 已经拜托了 #c1 的干扰。#c2 与 #c1之间的间距由 #c2 和 #c1的 margin 值之和决定。

现将 #c1 和 #c2 的 float 属性都去除,运行后结果如下:


 

 

发现,#c1 和 #c2 之间的距离仅为 20px,并不是二者的距离只和。#c2 内部的第一个div 距离上边距的margin值被忽略(其实是重叠在#c2的外边框中)。

 

现将 #c1 的 float 属性去除,保留#c2 的 float 属性,运行后结果如下:


 

此时所有间距都变为正常值。这就是float创建 BFC 的好处:可以将本元素的内外边距的折叠均变为正常。而其他的触发条件均不能控制自身外边距的折叠。

 

关于其他触发:

 

其他触发,均不会影响自身外边距的折叠。也就是说,在上面的例子中,#c1 与 #c2 的间距只能保持为 20px。

  • 大小: 9.2 KB
  • 大小: 7.4 KB
  • 大小: 6.1 KB
  • 大小: 4.6 KB
分享到:
评论

相关推荐

    Block Formatting Contexts Demo

    Block Formatting Contexts Demo

    CSS理解块级格式上下文(BFC)

    BFC(Block formatting context)直译为"块级格式化上下文"。它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干.接下来通过本文给大家介绍CSS理解块级格式上下文(BFC)的相关知识,感兴趣的朋友...

    css布局之BFC模式(block formatting context)

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

    如何理解 CSS 布局和块级格式上下文

    如标题所示,这篇文章主要是讲 块级格式上下文(BFC,Block Formatting Context) 。你可能没听过这个术语,但只要你曾经使用 过CSS 布局,你就能明白它。理解 BFC 是什么、它如何工作、如何创建一个 BFC 是非常有用...

    BFC实现自适应两栏布局

    BFC(Block Formatting Contexts)即块级格式化上下文,首先得是块元素,其次具备触发条件之一的才可以是BFC。 BFC的触发条件可以是 根元素;html标签本身就是一个BFC float的值不为none overflow的值不为visible ...

    浅析CSS里的BFC和IFC的用法

    前言 之前一直听到有人提到 CSS里的BFC,正巧在 IFE的练习里遇到了外边距折叠的问题,所以正好弄清楚BFC的机制。...而 Block Formatting Contexts (BFC,块级格式化上下文),就是 一个块级元素 的渲染显示

    什么是BFC? CSS 使用伪元素清除浮动的方法

    我们先了解一个名词:BFC(block formatting context),中文为“块级格式化上下文”。 先记住一个原则: 如果一个元素具有BFC,那么内部元素再怎么翻江倒海,翻云覆雨,都不会影响外面的元素。所以,BFC元素是不可能...

    CSS使用BFC规则布局引发外层div包裹内层div的处理方法

    BFC的概念BFC全称Block Formatting Context ,直译“块级格式化上下文”,也有译作“块级格式化范围”。它是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。...

    逆战班月总结

    左列定宽,右列自适应 .left{width:100px;...BFC(Block Formatting Context)块级格式化上下文。它是一个独立的渲染区域,就是一个独立的容器,并且这个容器里box的布局与容器外的布局没有关系。 BFC的渲染规

    Python 格式化输出_String Formatting_控制小数点位数的实例详解

    在本篇文章里小编给大家整理了关于Python 格式化输出_String Formatting_控制小数点位数的实例内容,需要的朋友们参考下。

    CSS布局基础BFC

    但是它的重要性确是杠杠的,可以这么说,没有它就就没有什么css布局 BFC,全称 Block Formatting Context,翻译成块级格式化上下文,它就是一个环境,HTML元素在这个环境中按照一定规则进行布局。一个环境中的元素...

    formatting:VanillaJS库用于格式化不同的事物

    @ transferwise /格式化 用法 数字格式 formatNumber仅用于格式化数字值和仅字母数字字符串。 如果要格式化与货币相关的金额,请使用formatAmount使用formatNumber 。 import { formatNumber } from '@transferwise...

    移动硬盘低级格式化工具

    低级格式化(Low-Level Formatting)又称低层格式化或物理格式化(Physical Format),对于部分硬盘制造厂商,它也被称为初始化(initialization)。最早,伴随着应用CHS编址方法、频率调制(FM)、改进频率调制...

    Android和XML代码格式化

    Eclipse 中: 配置方法: window-&gt;preferences-&gt;java-&gt;Code style-&gt;Formatter中导入android-formatting.xml ...XML格式化: http://www.androidpolice.com/2009/11/04/auto-formatting-android-xml-files-with-eclipse/

    格式化信息,LaTeX排版入门入门Formatting Information, a Beginner's Introduction to Typesetting With LaTeX

    最初随附为期2天的使用LaTeX排版系统的课程。

    Formatting Long Lines 格式化多行字符的shell脚本

    主要介绍了Formatting Long Lines 格式化多行字符的shell脚本,需要的朋友可以参考下

    address-formatting, 设置地理地址格式的模板.zip

    address-formatting, 设置地理地址格式的模板 电子邮件地址格式一个快速示例给定一组地址部件 house_number: 17 road: Rue du Médecin-Colonel Calbairac neighbourhood: Lafourguet

Global site tag (gtag.js) - Google Analytics