一、 box
box是css布局的基本单位,元素的类型和display属性决定了box的类型。不一样的类型的盒子会参与不一样的formatting context。css
block-level box :display属性为block、list-item(做为列表显示的元素)、table的元素会生成block-level box。bash
二、formatting context
它是页面中的一块渲染区域,而且有一套渲染规则,它决定了其子元素将如何定位,以及和其余元素的关系和相互做用布局
一、内部的box会在垂直方向上一个接一个的放置flex
<div class="div1"></div>
<div class="div2"></div>
复制代码
margin: 20px 0
,给div2设置
margin: 30px 0
,此时div1和div2之间的间距为30px。
<div class="left"></div>
<div class="main"></div>
复制代码
此时main元素没有产生bfc,left元素浮动,效果以下: spa
overflow:hidden
变为bfc,效果以下:
一、overflow属性不是visible
二、float属性不为none
三、display属性为inline-block、table-cell、flex、inline-flex、table-caption
四、position为absolute、fixed
五、body根元素code