BFC(Block Formatting Context,块级格式化上下文)可以看作是一个独立的小盒子,它里面的元素不会影响外面,外面的元素也不会影响里面。BFC在CSS布局中非常重要,特别是在处理浮动和边距问题时。
清除浮动:
避免外边距合并:
以下条件可以触发BFC:
<html>
)。float
不为none
)。position
为absolute
或fixed
)。display
为inline-block
)。display
为table-cell
或table
)。overflow
属性值为hidden
、auto
或scroll
的元素。display
为flex
或inline-flex
)。假设你有一个父容器container
里面放了几个浮动的子元素float-child
,但父容器的高度没有包含这些浮动元素,导致后面的元素following-element
跑到了浮动元素的旁边。
<div class="container">
<div class="float-child"></div>
<div class="float-child"></div>
</div>
<div class="following-element"></div>
.container {
overflow: hidden; /* 触发BFC */
}
.float-child {
float: left;
width: 100px;
height: 100px;
background: lightblue;
}
.following-element {
background: lightgreen;
height: 50px;
}
通过在.container
上设置overflow: hidden
,触发BFC,使父容器包含浮动元素的高度,确保following-element
正常显示在.container
下面。
假设你有两个相邻的块级元素child-1
和child-2
,它们的垂直外边距会合并,导致实际的间距比预期的小。
<div class="parent">
<div class="child-1"></div>
<div class="child-2"></div>
</div>
.parent {
overflow: auto; /* 触发BFC */
}
.child-1,
.child-2 {
margin-top: 20px;
height: 50px;
background: lightcoral;
}
通过在.parent
上设置overflow: auto
,触发BFC,避免外边距合并,保持两个元素之间的预期间距。
overflow
属性、浮动元素、绝对定位元素、行内块元素等。