vertical-align 定义
最初我认为的vertical-align 解释 跟text-align 一样,是容器内部的非block 元素居中对齐,但~~ 我理解错了
从w3c 官方对 vertical-align 各属性的解释来看,vertical-align 是定义当前节点,跟外围内容的对齐方式,跟text-align 的解释是不一样的。
vertical-align:baseline 基线对齐
分析所得,发现baseline不是在中文字的可见部分最下方,而是在英文字的可见部分最下方。
然后发现图片对齐的时候是以图片的最下方同相邻文字的 baseline 对齐。一直觉得为啥图片下方会有4像素的空白,现在明白了
不同字体会有不同效果
我这个demo 用的Tahoma 字体,发现如果使用类似 Yahei 等中文字体,在IE低版本下会有出现一些奇怪的现象,详细可以看demo。
vertical-align 最好不要混用
从定义来理解,就发现这个vertical-align 最好不要混用。因为本身不同属性会产生各种各样的兼容问题,如果混用,估计会出现更复杂的现象。虽然我也没有深入研究,但我觉得混用不太靠谱。
vertical-align: px 定位最稳定
这个属性一直都没怎么用,原先一直用middle 来实现水平对齐,在一次偶尔的项目代码里发现的。
相对定位是相对于baseline的偏差定位,负值代表图片相对baseline往下移。
在研究中发现使用相对定位兼容性最好,只有IE7会有2px的偏差,但基本可以无视,因为目前IE7的用户可以忽略不计。
不过这种方法也不是万能的,
因为是相对于baseline的相对定位,如果文字变大后,图片的对齐位置 看起来就不会跟着移动区别于middle属性,不过个人觉得这样的情况出现概率不大,并且字大了再针对调整也没问题。
另外图片大小不一样大相应的负值也不相同,详细见demo。
高潮:vertical-align 最佳兼容方案
前面说了这次研究没有白费,个人推荐的vertical-align 用法如下:
1. 尽量保持主内容的 vertical-align 是baseline 即默认的,不要把vertical-align 当text-align 来理解使用。
2. 针对 内部需要调整位置的 图片等 进行 px 定位。
优点:保证外围的vertical-align 是默认值,不产生混用现象。
缺点:针对不同尺寸的图片要针对进行定位,不过一般ico 大小差不多大,可以统一调整。
下一步研究方向:表单元素的vertical-align: px 是否同样适用