常规流
盒模型:规定单个盒子的规则。
视觉格式化模型(布局规则):页面中的多个盒子排列规则。
视觉格式化模型,大体上将页面中盒子的排列分为三种方式:
- 常规流;
- 浮动;
- 定位。
常规流布局
常规流又称文档流,普通文档流,常规文档流
所有元素,默认情况下,都属于常规流布局
总体规则:块盒独占一行,行盒水平依次排列。
包含块(containing block):每个盒子都有它的包含块,包含块决定了盒子的排列区域。
绝大部分情况下,盒子的包含块,为其父元素的内容盒。
规则:
块盒:
- 每个块盒的总宽度,必须刚好等于包含块的宽度
宽度的默认值是auto:将剩余空间吸收掉。
margin的取值也可以是auto(将剩余空间吸收掉),margin的默认值为0.
同为auto的时候width吸收能力强于margin。
若宽度、边框、内边距、外边距就算后,仍然有剩余空间,该剩余空间被margin-right全部吸收。
在常规流中,块盒在其包含块中居中,可以定宽,然后左右margin设置为auto。
margin:0px auto;
or
margin-left:auto;
margin-right:auto;
- 每个块盒垂直方向上的auto值
height:auto, 适应内容的高度
margin:auto ,表示0
- 百分比取值
padding、宽、margin可以取值为百分比。
以上所有的百分比,相对于包含块的宽度。
高度的百分比:
1). 包含块的高度取决于子元素的高度(父元素高度默认,子元素多高,父元素多高),设置百分比无效。
2). 包含块的高度不取决于子元素的高度,百分比相对于父元素高度。
- 上下外边距的合并
两个常规流的块盒,上下外边距相邻,会进行合并。
如:两个相邻div,上下边距都为50px,则两个div之间的间距为50px而非100px.
两个外边距取最大值。