line-height vertical align font-face

时间:2010-07-21 12:53:42

标签: html css3 font-face css

我有以下标记:

<div class="blockSection">
<h5>Title of the section</h5>
...
</div>

现在,.blockSection的h5具有固定的高度和背景图像,40px。为了垂直对齐文本,我总是将行高设置为与高度相同,因为文本不会在2行或更多行中断。但问题是我使用的是font-face字体,我不想在Firefox,Mac上的Safari中垂直对齐。在Windows中IE看起来不错。

任何人都知道正确的技巧,而不为浏览器应用不同的行高?

3 个答案:

答案 0 :(得分:2)

你可能只是运气不好...除了针对不同浏览器组合的黑客攻击之外OS。

“没有理想的行高适用于所有网络字体。每种字体都需要不同的默认行高,具体取决于其设计质量 - 无论是浓缩还是宽,是否有紧密或松散的字母间距,是否与x高度等相比,它的上升或下降长或短。“ - Webfonts.info

如果您从Webfonts获得了字体许可,他们就有了一个工具包构建器,可以让您摆弄行高选项。 “Bounding Box”适用于我在那里使用的一种字体。更多信息:http://webfonts.info//webfonts-know-how/part-3-line-height-options-kitbuilder

另一个选项优于条件样式表,因为字体可能会在不同的浏览器和操作系统,您可以尝试这个jQuery插件,使您能够检测到浏览器和组合的组合。操作系统,然后将一个类应用于它。不太理想,但这是一个选择。

http://www.icavia.com/2010/09/solving-font-face-alignment-issues/

更新:尝试的另一个选项是Font Squirrel Webfont Generator。如果您有权使用相关字体,请在专家模式下使用此生成器,并确保选中“修复垂直度量标准”选项。

答案 1 :(得分:1)

垂直居中(在非IE浏览器中)的一种解决方案是在display: table-cell上使用vertical-align: middleh5

答案 2 :(得分:0)

听起来conditional comments可以解决问题。在一个行高中创建一个仅IE样式表,在其他浏览器中创建一个具有行高的主样式表。

我知道您不希望为不同的浏览器设置不同的行高,但如果IE正在执行您想要的操作而其他浏览器没有,则这是最佳解决方案。