当前位置: 首页 > 科技观察

CSS中的BFC是什么?

时间:2023-03-16 12:43:33 科技观察

大家好,我是前端西瓜哥。今天就来学习BFC吧。BFC是BlockFormattingContext的缩写,中文翻译为BlockFormattingContext。BFC是网页CSS渲染的一种机制,是块级框布局中生成的区域。你可以把一个BFC理解为一个容器,里面的元素不会影响容器外面的布局。哪些元素属于BFC?根元素,即HTML元素。一个浮动元素,即使使用了float属性并且值不是none。绝对定位的元素。块级容器(例如display的值为inline-blocks、table-cells、table-captions)。溢出值不可见的元素。使用display:flow-root的元素。这是一个新的价值,旨在创造无副作用的BFC。兼容性存疑,比较少用。当然还有一些CSS属性也可以触发BFC,但是比较少见,这里就不一一列举了。读者可以自行阅读MDN文档。目前,最常见的方式是构建带有overflow:hidden的BFC。一般来说,它的副作用很小。但如果元素下有超出框范围的内容,则会被截断,请谨慎使用。BFC的特点BFC有两个主要的特点,让我们来了解一下。特征一:上下边距重叠在同一个BFC下的两个相邻的块级元素,上下方向的边距重叠。比如上一个div设置margin-bottom:20px,下一个div设置margin-top:10px,然后你会发现他们之间的距离其实是20px(两者的最大值),而不是30px(和)两者之一)。<样式>.box{宽度:100px;高度:100px;}.b1{背景颜色:浓汤;底部边距:20px;}.b2{背景颜色:蓝紫色;顶部边距:10px;}

如果你想避免这种情况,你可以在这两个div周围包裹一个BFC。<样式>.container{溢出:隐藏;}/*...*/
因为overflow:hidden有副作用,在实际开发中,我更喜欢使用padding而不是margin。特点二:浮动元素也会参与高度浮动的计算,这是一个很奇怪的效果。效果类似于word的文字环绕排版,可以让文字和行内样式环绕起来。当一个元素被赋予浮动效果时,它会脱离正常的文档流并向左或向右移动到其容器的边界,或者直到它接触到另一个浮动元素。浮动元素与正常文档流分开。一般来说,在计算容器元素的高度时,会考虑浮动元素的高度。但是BFC可以强制浮动元素参与计算。