vertical-align
vertical-align会影响 行内块级元素 在一个 行盒 中垂直方向的位置。一个div没有设置高度的时候,会不会有高度?没有内容,没有高度。有内容,内容撑起来高度。但是内容撑起来高度的本质是什么呢?内容有行高(line-height),撑起来了div的高度。行高为什么可以撑起div的高度?这是因为line boxes的存在,并且line-boxes有一个特性,包裹每行的inline level。而其中的文字是有行高的,必须将整个行高包裹进去,才算包裹这个line-level。如果这个div中有图片,文字,inline-block,甚至他们设置了margin这些属性呢?
- 情况一:只有文字时,line boxes如何包裹内容?
- 情况二:有图片,有文字时,line-boxes如何包裹内容?
- 情况三:有图片,有文字,有inline-block(比图片要大)如何包裹内容?
- 情况四:有图片,有文字,有inline-block(比图片要大)而且设置了margin-bottom,如何包裹内容?
- 情况五:有图片、文字、inline-block(比图片要大)而且设置了margin-bottom并且有文字,如何包裹内容?
vertical-align的baseline
line-boxes一定会想办法包裹住当前行中所有的内容。但是,但是为什么对齐方式千奇百怪呢?答案就是baseline对齐。官方vertical-align的默认值就是baseline。
但是baseline都是谁呢?
- 文本的baseline是字母x的下方
- Inline-block默认的baseline是margin-bottom的底部(没有,就是盒子的底部)
- Inline-block有文本时,baseline是最后一行文本的x的下方