BFC (Block Formatting Context 块级格式化上下文)
BFC是一个独立的布局环境,BFC内部的元素布局与外部互不影响
BFC特性
- 同一BFC下相邻块级元素的margin会重叠
- 触发了BFC的元素,不会被浮动元素覆盖,避免文字环绕
- overflow、float、dispaly: inline-block、table-cell触发,元素跟随浮动文档流
- position脱离文档流,提高层级
- 触发BFC的元素,浮动元素加入高度计算
触发BFC
- 子 float: left \ right (每个元素都设置,注意宽度,换行了才有效果显示)
- 子 position: absolute \ fixed
- display: inline-block \ inline-flex \ 父flex
- 父overflow: hidden \ scroll \ auto 但这几个不改变元素特性,作用在子元素上
css
body .wrap{
width: 100%;
/* display: flex; */
/* overflow: hidden; */
/* overflow: auto; */
/* overflow: scroll; */
}
body .wrap .inner{
/* float: left; */
/* display: inline-block; */
/* display: inline-flex; */
margin-bottom: 10px;
margin-top: 10px;
width: 100%;
height: 100px;
border: 1px solid red;
box-sizing: border-box;
}解决块级块级margin重叠
- 给其中一个元素触发bfc,但overflow作用在子元素上所以无效
- 用个父盒子包裹其中一个元素,然后给父盒子设置overflow
自适应布局
- 左右自适应,一边浮动,另一边overflow
- 中间自适应,左右浮动,中间overflow
JStar