CSS line-height属性大于font-size属性

Dom*_*icM 2 html css styles text-size

我有一个非常讨厌的问题,我希望将图像的顶部与文本对齐,但字母实际上略低于行高.

我用经典电影创建了简单的示例来说明下面的问题.

HTML:

<img src="http://cf2.imgobject.com/t/p/w92/wcI3VMHw2TqtPVIkS4wpmxBJzWB.jpg" />
<p>Big</p>
<p>Admin</p>
Run Code Online (Sandbox Code Playgroud)

CSS:

p, h4{
    font-size:1em;
    line-height:1em;
    vertical-align:top;
    margin:0;
    padding:0;
    font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
}

img{
    float:left;
    width:46px;
}
Run Code Online (Sandbox Code Playgroud)

输出(在Chrome中):

正如您所看到的那样,当线条高度与图像顶部对齐时,文本本身不是.我已经尝试了所有垂直对齐选项,没有修复.

为什么线条高度大于字体大小,即使它们都设置为相同的尺寸?怎么解决这个问题?

小智 9

这一般与排版有关,而不是CSS.有许多垂直指南可以考虑字体设计.我假设您希望上限高度与图像顶部相匹配.

我在这里将你的例子添加到jsfiddle:http://jsfiddle.net/ahXpH/1/并复制它.如果你放大,你可以看到"大"中的"i"实际上比B高,而"g"超出了段落本身的范围.检查Chrome中的元素会显示line-heightfont-size匹配.

要解决这个问题,你必须调整margin-top并对其进行视觉排列.对于我的jsfiddle版本,这恰好margin-top: -8px;font-family: "Trebuchet MS"font-size:48px.(http://jsfiddle.net/ahXpH/4/)但是,如果您删除"Trebuchet MS"并使用Arial的后备前端,您将看到它不再排列并且现在是图像上方的像素.

最终,我不确定是否有一个纯CSS解决方案.硬编码该值仅适用于一种字体,甚至可能因浏览器而异.

  • 大写字母略低于字体高度的顶部.如果"E"延伸到顶部,例如"Ê"会发生什么?请注意,即使所有大写字母都不是同样高; 即,在Trebuchet MS中,"B"高于"T".因此,您需要对演示文稿进行微调,以便特定字符(可能是文本的首字母)按您喜欢的方式放置.由于这会因字体而异,因此需要可下载的字体(网络字体,`@ font-face`). (3认同)