BFC--对块级格式化上下文的理解

* { }
html,body { width: 100%; background: #fff }
.c333 { color: #333 }
.container { width: 80%; margin: 0 auto; font-size: 16px; color: #666 }
h3 { font-size: 35px !important; color: #333; text-align: center !important }
p { line-height: 25px; margin-left: 10px; font-size: 16px !important }
img { margin-left: 20px }
.f18 { font-size: 18px }
.box { width: 70%; padding: 20px; margin: 20px auto }
.title { font-size: 26px; color: #4f4f4f; line-height: 30px; margin: 25px 0; font-weight: bold; padding: 7px 20px; background: #ebebeb }
.subtitle { font-size: 16px; color: #666; line-height: 30px; font-weight: bold; margin: 5px 0 5px 10px }
.code { width: 65%; padding: 10px; margin: 10px 0 10px 40px; background: rgba(0,0,0,.8); color: #fff }
.tip { color: #999; font-size: 15px; margin-left: 30px }
ul li { list-style: circle; line-height: 30px; color: #666; font-size: 16px !important }

BFC--对块级格式化上下文的理解

什么是formatting context

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

什么是Block Formatting Context

BFC直译为“块级格式化上下文”;它是页面中一个独立的渲染区域,规定了block-level-box如何布局,并且与该区域外的元素布局互不影响。

约束规则

  • 内部的Box会在垂直方向上一个接一个的放置
  • 元素垂直方向的距离由margin决定,即属于同一个BFC的两个相邻盒子的margin可能会发生重叠。
  • 每个元素的左外边距与包含块的左边界相接触(从左向右),即使浮动元素也是如此。(这说明BFC中子元素不会超出li的包含块,而position为absolute的元素可以超出他的包含块边界)
  • BFC的区域不会与float的元素区域重叠
  • 计算BFC的高度时,浮动子元素也参与计算
  • BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面元素,反之亦然

如何触发BFC

  • 根元素或其它包含它的元素
  • float属性不为none
  • overflow不为visible
  • position为absolute或fixed
  • display为inline-block, table-cell, table-caption, flex, inline-flex

BFC的应用

1、根据BFC布局规则:“ 属于同一个BFC的两个相邻盒子的margin可能会发生重叠 ” ———— 解决margin重叠

产生折叠的必备条件:必须是处于常规文档流(非float和绝对定位)的相邻的块级盒子,并且处于同一个BFC当中

折叠结果:

  • a、 两个相邻的外边距都是正数时,折叠结果是它们两者之间较大的值。
  • b、 两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值。
  • c、 两个外边距一正一负时,折叠结果是两者的相加的和。

  

2、根据BFC布局规则:“ 计算BFC的高度时,浮动元素也参与计算 ” ———— 解决浮动带来的父级高度坍塌问题

  

  

3、根据BFC布局规则:“ BFC的区域不会与float的元素区域重叠 ” ———— 实现自适应两栏布局

  

原文地址:https://www.cnblogs.com/spencer66/p/9295676.html

时间: 2024-07-31 19:37:31

BFC--对块级格式化上下文的理解的相关文章

基础总结(02)--BFC(块级格式化上下文)

BFC(块级格式化上下文)布局规则 1.元素垂直排列. 2.同一个BFC相邻两个元素的margin会重叠. 3.BFC区域不会与浮动元素重叠. 4.BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素.反之也如此. 5.计算BFC的高度时,浮动元素也参与计算. 如何创建BFC 1.根元素 2.浮动float 3.absolute或fixed 4.overlfow部位visible 5.display为inline-block, table-cell, table-capti

对BFC规范(块级格式化上下文:k block g formatting context) 的理解

(W3C CSS 2.1 规范中的一个概念,它是一个独立容器,决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用.)一个页面是由很多个 Box 组成的,元素的类型和 display 属性,决定了这个 Box 的类型.不同类型的 Box,会参与不同的 Formatting Context(决定如何渲染文档的容器),因此Box内的元素会以不同的方式渲染,也就是说BFC内部的元素和外部的元素不会互相影响.

块级格式化上下文(block formatting context)、浮动和绝对定位的工作原理详解

CSS的可视化格式模型中具有一个非常重要地位的概念——定位方案.定位方案用以控制元素的布局,在CSS2.1中,有三种定位方案——普通流.浮动和绝对定位: 普通流:元素按照先后位置自上而下布局,inline元素水平排列,直到行被占满后换行,block元素则被渲染为完整的一行,除非指定,所有元素默认为普通流定位. 浮动:浮动布局中,元素首先按照普通流位置出现,然后根据浮动方向尽可能向左或右偏移,效果与文本环绕相似. 绝对定位:元素会脱离普通流,因此绝对定位元素不会对其兄弟元素产生影响(与float不

块级格式化上下文(block formatting context)

在CSS2.1中,有三种定位方案--普通流.浮动和绝对定位: 普通流:元素按照先后位置自上而下布局,inline元素水平排列,直到行被占满后换行,block元素则被渲染为完整的一行,除非指定,所有元素默认为普通流定位. 浮动:浮动布局中,元素首先按照普通流位置出现,然后根据浮动方向尽可能向左或右偏移,效果与文本环绕相似. 绝对定位:元素会脱离普通流,因此绝对定位元素不会对其兄弟元素产生影响(与float不同),元素的具体位置由坐标位置决定. BFC是属于普通流,因此它对兄弟元素也不产生影响. 一

我理解的BFC(块级格式化上下文)

BFC(Block formatting context) 直译为"块级格式化上下文". BFC它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干. 白话文: 孩子在家里愿意怎么折腾都行,但是出了家门口,你就的乖乖的,不能影响外面的任何人. 不是所有的元素模式都能产生BFC,w3c 规范: display 属性为 block, list-item, table 的元素,会产生BFC. 大家有

CSS中块级格式化上下文(BFC)的特性与应用

一.何为BFC 块级格式化上下文(Block Formatting Context)是网页CSS视觉渲染的一部分,并用于决定盒子的布局.在定位体系中属于常规流(Normal Flow)(另外两种定位体系为浮动(Floats)和绝对定位(Absolute Positioning)). 二.BFC如何形成 BFC的形成,根据W3C所言: 浮动.绝对定位元素(position 为 absolute 或 fixed).行内块元素 display:inline-block.表格单元格display:tab

BFC(块级格式化上下文)

定义:BFC(Block formatting context)为块级格式化上下文.它是一种环境,不会对周围其它盒子的布局产生影响,它只规定了内部如何布局. BFC布局规则 1.内部的Box会在垂直方向,一个接一个地放置. 2.Box垂直方向的距离由margin决定.属于同一个BFC的两个相邻Box的margin会发生重叠 3.每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反).即使存在浮动也是如此. 4.BFC的区域不会与floa

BFC块级格式化上下文简述

做过页面编写的各位应该对定位不陌生了,这个样式表中的重头戏,也是最难把控的元素之一,今天在这里我们要讲到的就是与浮动与清除浮动相关的定位元素,对于定位有很多种,有绝对定位,还有相对定位,固定定位,静态定位,对于这几种耳熟能详的定位在这里我们不必花费时间去讨论,我们今天要关注的是另一种神奇的定位,也就是所谓的bfc,对于前面几个定位,都会或多或少产生一些后遗症,影响它的兄弟元素的位置和父元素产生高度塌陷,这个不仅会影响内部的元素,还会对外部的元素产生影响,经常会弄得很头疼,往往为了移动某一个很小的

Block formatting contexts (块级格式化上下文)简称 BFC 的特性

如何触发BFC呢? float 除了none以外的值 overflow 除了visible 以外的值(hidden,auto,scroll ) display (table-cell,table-caption,inline-block) position(absolute,fixed) fieldset元素 需要注意的是,display:table 本身并不会创建BFC,但是它会产生匿名框(anonymous boxes),而匿名框中的display:table-cell可以创建新的BFC,换