# 文档流

# 注意

我们会听到说行内元素(如<span></span>)不换行, 块级元素(如<p></p>)会换行. 其实这种说法并不准确. 只是各个元素被默认设定了inline或者block而已. 关键是我们把这个元素的display设为了什么.

# inline元素

inline

# 流动方向

文档流从窗口的左上角开始, 从左到右, 从上到下. inline元素不会换行,而是默认把当前行占满.如4-8个span

# 宽度

inline元素的宽度是根据所包裹的元素的宽度觉得, 不能被设置. 第二个span的宽度就由里面的内容宽度决定. 给第三个span设置宽度则没有效果.

# 高度

inline元素的高度由line-height间接确定, 与height无关. 将spanline-height设置为100px,第三个span的高度被撑起来了. 但为什么是间接确定, 将第三个span的字体设置为monospace, 可以看见其高度发生了变化(变为了102.727px): inline-height 具体原因可以参考这篇博客

# block元素

block

# 流动方向

block元素会换行, 如第1,2,3个div

# 宽度

block元素会自动撑满当前宽度, 还是请见第1,2,3个div

警告

width: 100%这玩意绝对不能写!!

# 高度

block元素的高度由内部元素的总体高度确定, 总是将其包裹在内. 如第五个div

# overflow

div内的元素超过了div的宽高, 我们就能叫其overflow. 针对这种现象我们可以通过设置CSS属性overflow来解决. 见第四个div

# inline-block元素

inline-block inline-block元素是结合了两者的特点. inline-block布局像inline一样在行内, 但是可以像block元素一样设置widthheight

# 源码