对img行间对齐以及vertical-align:middle的探讨
对于vertical-align:middle,w3的解释很简单:
Align the vertical midpoint of the box with the baseline of the parent box plus half the x-height of the parent.
这个x-height的定义是:
The x-height is so called because it is often equal to the height of the lowercase "x". However, an 'ex' is defined even for fonts that don't contain an "x".
单位“ex”的定义是:the 'x-height' of the relevant font,按理说如果选定了字体,x-height应该比em和px更靠谱,但操作系统、浏览器、字体版本等等各种各样的因素导致我们无法信任以字体为出发点的表现处理;
所以middle实际上应该是对齐到基线上方1/4倍ex的位置,但浏览器的处理各不相同,尤其是中英文混排的时候,虽然有人提出如下方案进行补足(如果认为1ex=0.5em,那应是0.25em,但考虑到中文的情况,修改为0.2em):
但烦人的是随着系统环境的不断升级,如果你的用户很巨量,你要面对的新旧版本差异范围会越来越大,兼容or不兼容,这是个问题……
鉴于所有市面上的操作系统和浏览器都是中文苦手的,中英文混排时对line-height、baseline、x-height计算的混乱不是它们的错,更不是我们的错,而宋体5.0的出现和IE8的“文本模式”提醒我们:不能再跟这些属性较劲,一切交给浏览器去处理吧(把出错的原因都推给浏览器吧……@_@)
Align the vertical midpoint of the box with the baseline of the parent box plus half the x-height of the parent.
这个x-height的定义是:
The x-height is so called because it is often equal to the height of the lowercase "x". However, an 'ex' is defined even for fonts that don't contain an "x".
单位“ex”的定义是:the 'x-height' of the relevant font,按理说如果选定了字体,x-height应该比em和px更靠谱,但操作系统、浏览器、字体版本等等各种各样的因素导致我们无法信任以字体为出发点的表现处理;
所以middle实际上应该是对齐到基线上方1/4倍ex的位置,但浏览器的处理各不相同,尤其是中英文混排的时候,虽然有人提出如下方案进行补足(如果认为1ex=0.5em,那应是0.25em,但考虑到中文的情况,修改为0.2em):
img {vertical-align:middle;margin-bottom:0.2em}
但烦人的是随着系统环境的不断升级,如果你的用户很巨量,你要面对的新旧版本差异范围会越来越大,兼容or不兼容,这是个问题……
鉴于所有市面上的操作系统和浏览器都是中文苦手的,中英文混排时对line-height、baseline、x-height计算的混乱不是它们的错,更不是我们的错,而宋体5.0的出现和IE8的“文本模式”提醒我们:不能再跟这些属性较劲,一切交给浏览器去处理吧(把出错的原因都推给浏览器吧……@_@)
标签: Web技术及应用




3 条评论:
时间 2009年2月5日 上午10:12 ,
nuffin 说...
作者已删除了此帖。
时间 2009年2月5日 上午10:13 ,
nuffin 说...
有时候不得不对特殊版本的浏览器做些 hack。。。因为我们要保证的是用户看到的正常,而不是追求代码看上去 beautiful。。。代码好看,但让用户看到不好看的界面,也是不完美的
-rocky
时间 2009年2月5日 上午10:46 ,
Cutsin 说...
嗯,保证呈现在可容忍的范围内是肯定的;
IE8的文本模式对齐的表现看起来不错,但不觉得它是按x-height计算的,别的浏览器都还是1/4左右……
依靠hack很容易失效,还是取个折中的方案吧,毕竟技术在进步^^
发表评论
指向此帖子的链接:
创建链接
<< 主页