做彩票网站技术,合肥网站建设毅耘,自己给网站做logo,电子商务网站建设项目书在了解什么是BFC之前#xff0c;首先得明白什么是Box , Formatting Context #xff08;一个决定如何渲染文档的容器#xff09;的概念 Box: CSS布局的基本单位 Box是 CSS 布局的对象和基本单位#xff0c; 直观点来说#xff0c; 就是一个页面是由很多个 Box组成的#…在了解什么是BFC之前首先得明白什么是Box , Formatting Context 一个决定如何渲染文档的容器的概念 Box: CSS布局的基本单位 Box是 CSS 布局的对象和基本单位 直观点来说 就是一个页面是由很多个 Box组成的 元素的类型和display属性 决定这个BOX的类型 不同类型的BOX 会参与不同的Formatting Context 因此BOX内的元素会以不同的方式渲染 其盒子的类型分别为 block-level box:display 属性为 block, list-item, table 的元素会生成 block-level box。并且参与 block fomatting contextinline-level box:display 属性为 inline, inline-block, inline-table 的元素会生成 inline-level box。并且参与 inline formatting context若为block-level box 设置inline-block则会产生BFCrun-in box: css3 中才有 这儿先不讲了Formatting Context 是W3C CSS2.1规范中的一个概念它是页面中的一块渲染区域 并且有一套渲染规则他觉得了子元素如何定位 以及和其他元素关系和相互作用 最常见的 Formatting context 有 Block fomatting context (简称BFC)和 Inline formatting context (简称IFC)。 CSS2.1 中只有 BFC 和 IFC, CSS3 中还增加了 GFC 和 FFC。 BFC 定义 BFCBlock formatting context直译为“块级格式上下文” 它是一个独立渲染区域只有BLOCK-LEVEL BOX参与 他规定内部的BLOCK-LEVEL BOX如何布局 并与这个区域外部不相干 BFC布局规则 内部的Box会在垂直方向一个接一个地放置。Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠每个元素的margin box的左边 与包含块border box的左边相接触(对于从左往右的格式化否则相反)。即使存在浮动也是如此。BFC的区域不会与float box重叠。BFC就是页面上的一个隔离的独立容器容器里面的子元素不会影响到外面的元素。反之也如此。计算BFC的高度时浮动元素也参与计算哪些元素会参生BFC 根元素float属性不为noneposition为absolute或fixeddisplay为inline-block, table-cell, table-caption, flex, inline-flexoverflow不为visibleBFC的作用及原理 自适应两栏布局根据BFC布局规则第3条每个元素的margin box的左边 与包含块border box的左边相接触(对于从左往右的格式化否则相反)。即使存在浮动也是如此。因此虽然存在浮动的元素aslide但main的左边依然会与包含块的左边相接触。根据BFC布局规则第四条BFC的区域不会与float box重叠。我们可以通过通过触发main生成BFC 来实现自适应两栏布局.main { overflow: hidden; } BFC后这个新的BFC不会与浮动的aside重叠。因此会根据包含块的宽度和aside的宽度自动变窄。 转载于:https://www.cnblogs.com/longsf/p/10438078.html