`
lllt
  • 浏览: 66674 次
  • 性别: 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(块级格式化上下文)是CSS布局中的一个重要概念,它定义了元素如何在其内部以及与其他元素交互时进行布局。在Block Formatting Contexts Demo中,我们可以深入理解这一概念并探索其实际...

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

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

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

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

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

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

    inline-block 前世今生1

    hasLayout是一个IE特有的概念,意味着元素成为一个独立的矩形容器,可以设置宽度和高度,并且不受周围元素的影响,类似于现代浏览器中的Block formatting contexts(块级格式化上下文)。 在处理IE6和IE7的display:...

    浅析CSS里的BFC和IFC的用法

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

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

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

    诱发BFC的原因及处理方案

    本文将深入探讨三种常见的定位方案:普通流、浮动和绝对定位,以及与之相关的Block Formatting Contexts (BFC)的概念、触发条件和实际应用。 **一、定位方案** 1. **普通流 (normal flow)**:这是元素默认的布局...

    Fujitsu 富士原厂低级格式化程序

    本文将详细探讨“Fujitsu 富士原厂低级格式化程序”,这是一种专门针对富士通硬盘设计的专业工具,用于对硬盘进行低级格式化。 低级格式化(Low-Level Formatting,LLF)是计算机硬盘初始化的一种方法,它在物理...

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

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

    带xml、ftl格式化工具的editplus

    3. 确保“自动格式化”(Auto Formatting)选项被勾选,这将允许你在保存文件时自动格式化XML代码。 4. 如果需要自定义XML格式化规则,可以点击“格式化”(Format)按钮,设置缩进样式、空格数量等。 **FTL...

    前端面试题

    2. BFC(Block Formatting Context,块级格式化上下文) BFC是Web页面的可视化CSS渲染的一部分,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。当涉及到页面布局时,了解和运用BFC是非常重要...

    磁盘低级格式化工具集合

    与高级格式化(High-Level Formatting)不同,高级格式化是在低级格式化的基础上建立文件系统,如FAT、NTFS或EXT等,为用户提供文件存储的逻辑结构。 二、磁盘低级格式化的应用场景 1. 硬盘故障修复:当硬盘出现...

    XML格式化(换行,缩进)

    本文将围绕“XML格式化(换行,缩进)”这一主题,详细探讨如何使用C#语言对XML文档进行格式化操作,包括换行与缩进,从而让XML文档的结构更加清晰,便于人工阅读和调试。 ### XML格式化的重要性 XML文档本质上是...

    低级格式化硬盘工具

    低级格式化(Low-Level Formatting,LLF)是硬盘初始化的一种方法,与常见的高级格式化(High-Level Formatting,HLF)不同。低级格式化涉及到硬盘的物理层面,包括对磁道、扇区的划分以及建立硬盘的逻辑结构。这个...

    移动硬盘低级格式化.zip

    在计算机硬件层面,低级格式化(Low-Level Formatting,简称LLF)是对硬盘或存储设备进行初始化的过程,它会创建磁盘上的物理扇区和磁道,并构建一个可供操作系统使用的逻辑结构。与之相对的是高级格式化(High-...

    idea 代码检查和格式化插件

    2. **代码格式化(Code Formatting)**: IntelliJ IDEA提供了强大的代码格式化功能,可以根据特定的代码风格规则自动调整代码布局。用户可以自定义格式化规则,包括缩进风格、空格使用、命名规范等。此外,IDE还...

    内存卡低级格式化工具

    内存卡低级格式化工具是一种专门用于对内存卡进行深层清理和修复的软件,它可以清除内存卡上的所有数据,包括文件系统、分区信息以及可能存在的坏道,为内存卡提供一个全新的、原始的存储空间。这个工具对于解决内存...

Global site tag (gtag.js) - Google Analytics