连我自己把float和绝对定位,都称为脱离文档流,想想概念又不那么清晰,于是寻找了W3C资料来理解,才发觉不应该叫文档流。
资料
英文:https://www.w3.org/TR/CSS22/visuren.html#normal-flow
中文:http://w3help.org/zh-cn/kb/010/
PS:资料中文翻译为常规流,我觉得直译为普通流也行。
常规流
这个概念定义了什么东西,它决定了什么?它决定元素的布局方式,是基本的布局模式!
盒子模型
盒子模型,是DOM元素的抽象定义。盒子模型里,元素有margin、border、padding、content,分为块元素和内联元素两种。
块级元素(block)
块级元素会一个接一个地被垂直放置,起点是包含块的顶部。
内联元素(inline)
内联元素会一个接一个地水平排列,起点是包含块的顶部。
常规流布局
将窗体自上而下分成一行一行,块级元素从上至下、 行内元素在每行中按从左至右的依次排放元素。
PS:float、absolute是另外布局方式,position:relative属于常规流。
总结
其实也是简单东西,理解模糊时想复杂了。另外,即使别人将normal flow称为文档流,也不用去纠正。因为一个错误理解如果已经被大多人接受,那它也是对的。