BFC-块状格式化上下文

块状格式化上下文(Block Formatting Context,BFC)

MDN对BFC的定义:是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。

BFC是一个独立的渲染空间,只有块级元素参与,规定了内部元素如何布局,并且与这个区域外部的元素不相干。

触发BFC

  • 根元素(html)
  • 浮动元素(float不为none)
  • 绝对定位元素(元素的position为absolute或fixed)
  • 行内块元素(display为inline-block)
  • 表格相关元素(display为table-cell,table-caption,table,table-row, table-row-group, table-header-group, table-footer-group或inline-table)
  • overflow不为visible的元素
  • display为flow-root(The value name of flow-root makes sense when you understand you are creating something that acts like the root element (<html> element in browser) in terms of how it creates a new context for the flow layout inside it.)
  • 弹性元素(display为flex或inline-flex元素的直接子元素)
  • 网格元素(display为grid或inline-grid元素的直接子元素)
  • 多列容器(元素的column-count或column-width不为auto,包括column-count为1), column-span为all的元素始终会创建一个新的BFC,即使该元素没有包裹在一个多列容器中
  • contain值为layout、content或paint的值

布局规则

  • 在一个BFC中,块盒与行盒都会垂直的沿着其父元素的边框排列
  • 垂直方向的距离由margin来决定,属于同一个bfc中的两个相邻的元素的上下margin会重叠
  • 每一个元素的margin-left和父元素的border-left相接触
  • bfc的区域不会和浮动区域相重叠
  • bfc和区域外部的元素不相干
  • 在计算bfc高度时,浮动元素也会参与计算
  • 浮动定位和清除浮动时只会应用于同一个BFC内的元素。浮动不会影响其他BFC中元素的布局,而清除浮动只能清除同一BFC中在它前面的元素的浮动。外边距重叠也只会发生在属于同一BFC的块级元素之间

BFC可以做什么呢?

包含浮动,清除父元素高度塌陷问题

  浮动元素会脱离文档流(绝对定位也会)。如果一个没有高度或者height是auto的容器的子元素是浮动的,则该容器的高度是不会被撑开的。BFC能包含浮动,也能解决容器高度不会被撑开的问题。

避免外边距重叠

  BFC产生外边距折叠要满足一个条件:两个相邻元素要处于同一个BFC中。所以,若两个相邻元素在不同的BFC中,就能避免外边距折叠。

使用BFC可以实现两栏布局,一侧元素浮动,另一侧触发BFC

在多列布局中使用BFC

如果我们创建一个占满整个容器宽度的多列布局,在某些浏览器中最后一列有时候会掉到下一行。这可能是因为浏览器四舍五入了列宽从而所有列的总宽度会超出容器。但如果我们在多列布局中的最后一列里创建一个新的BFC,它将总是占据其他列先占位完毕后剩下的空间。因为bfc的区域不会和浮动区域相重叠

本文参考链接:什么是BFC块状格式化上下文

原文地址:https://www.cnblogs.com/jett-woo/p/11838883.html

时间: 2024-11-08 11:04:44

BFC-块状格式化上下文的相关文章

个人理解的块状格式化上下文

第一次看到层叠上下文这个东西并不知道这是个什么,去看了一些大神的文章,然后发现类似的有BFC,然后牵扯出一系列的什么是FC,什么是BFC,什么是IFC等.以下的东西是摘抄别人文章的一些内容和一些自己的理解,方便自己回忆吧. FC(Formatting Context)翻译过来就是格式化上下文/格式化范围,指的是页面布局中的一块区域,它拥有自己的渲染规则,决定自己的子元素如何布局,并和其他元素的关系和作用. 根据css显示分类,xhtml元素被分为三种类型:块状元素,内联元素,可变元素.给页面元素

前端面试题-BFC(块格式化上下文)

一.BFC 的概念 1.规范解释 块格式化上下文(Block Formatting Context,BFC)是Web页面的可视化CSS渲染的一部分,是布局过程中生成块级盒子的区域,也是浮动元素与其他元素的交互限定区域. 2.通俗理解 BFC 是一个独立的布局环境,可以理解为一个容器,在这个容器中按照一定规则进行物品摆放,并且不会影响其它环境中的物品. 如果一个元素符合触发 BFC 的条件,则 BFC 中的元素布局不受外部影响. 浮动元素会创建 BFC,则浮动元素内部子元素主要受该浮动元素影响,所

块级格式化上下文

初识块级格式化上下文(Block Formatting Contexts) 前言 html文档中元素的定位有3种方式(普通流.绝对定位.浮动),除普通流以外,浮动与绝对定位都会导致元素脱离普通流,按照各自的方式进行定位. 带有BFC属性的容器属于普通流的一种. 块级格式化上下文 (BFC) 块格式化上下文是页面 CSS 视觉渲染的一部分.它是用于决定块盒子的布局及浮动相互影响范围的一个区域. BFC是元素在拥有某些特定属性才显示的一种属性,有BFC特性的元素和其他普通流中的元素在样式上没有区别.

BFC块级格式化上下文简述

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

BFC(块级格式化上下文)

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

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

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

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,换

BFC——块级格式化上下文

BFC(块级格式化上下文) 一.BFC是什么? 从样式上看,具有BFC的容器和普通的容器没有区别.从功能上看,具有BFC的容器可以看作是隔离了的容器,容器里面的元素不会影响到外面的元素,并且BFC具有普通容器没有的一些特性,例如可以包含浮动元素,上文中的第二类清除浮动的方法(如overflow方法)就是触发了浮动元素的父元素BFC,使到它可以包含浮动元素,从而防止出现高度塌陷的问题. 简单来说,BFC就是一种属性.这种属性会影响着元素的定位以及与其兄弟元素之间的相互作用. 二.BFC的触发 浮动

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

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