1.什么是BFChtml
BFC(块级格式化上下文)Block Formatting Contextbash
2.BFC的原理(渲染规则)
(1)BFC垂直方向边距重叠问题
(2)BFC的区域不会与浮动元素的box重叠
(3)BFC是一个独立的容器,外面的元素不会影响里面的元素
(4)计算BFC高度的时候浮动元素也会参与计算
布局
3.建立BFC的条件有哪些ui
(1)浮动元素的float
不是none
spa
(2)绝对定位元素position
不为relative
或static
3d
(3)内联块display
为inline-block
, table-cell
, table-caption
中的任何一个。code
(4)具备overflow
且值不是visible
的块元素(auto
, scroll
, hidden
)orm
4.情景
(1)垂直方向边距重叠问题cdn
<style>
html * {
margin: 0;
padding: 0;
}
.margin {
background: yellowgreen;
overflow: hidden;
}
.margin > p {
margin: 10px auto 20px;
background: red;
height: 30px;
}
</style>
<section class="margin">
<p>1</p>
<p>2</p>
<p>3</p>
</section>
复制代码
<style>
html * {
margin: 0;
padding: 0;
}
.margin {
background: yellowgreen;
overflow: hidden;
}
.margin p {
margin: 10px auto 20px;
background: red;
height: 30px;
}
.overflow {
overflow: hidden;
background: blue;
}
</style>
<section class="margin">
<p>1</p>
<div class="overflow">
<p>2</p>
</div>
<p>3</p>
</section>
复制代码
如上,咱们在第二个p标签外层加了div标签,加入样式overflow: hidden
;解决了边距重叠的问题。效果以下:htm
(2)布局问题(BFC与float的重叠)
<section class="layout">
<style>
.layout {
background: yellow;
}
.layout .left {
float: left;
width: 50px;
height: 50px;
background: red;
}
.layout .right {
height: 70px;
background: blue;
}
</style>
<div class="left"></div>
<div class="right"></div>
</section>
复制代码
<style>
.layout .right {
height: 70px;
background: blue;
overflow: auto;
}
</style>
复制代码
overflow: auto
使用
BFC的元素不会与float元素相互重叠的特性使左右两侧区分开来。整个section的颜色也显示了出来。便达到了咱们想要的结果。
(3)清除浮动
<section class="clear">
<style>
.clear {
background: gold;
}
.clear .float {
float: left;
font-size: 30px;
}
</style>
<div class="float">
float element
</div>
</section>
复制代码
<style>
.clear {
background: gold;
overflow: auto;
或
float: left;
}
</style>
复制代码
如上,咱们加入overflow: auto
或float: left
,解决了问题。