使用
这会导致Chrome(v16.0.912.63)和Safari(v5.1.2)出现问题,当jQuery
然而,Firefox(v8.0.1)能够计算正确的高度,即在使用非标准字体呈现文本后。 问题是是否有一种实用的方法告诉Chrome,或者理想情况下是所有浏览器,在进行计算之前等待使用预期字体呈现文本。 使用
@font-face
来为网页设置非标准字体时,需要浏览器先下载字体文件(就像它下载其他资源如CSS、JavaScript等),然后才能进行真正的渲染。这会导致Chrome(v16.0.912.63)和Safari(v5.1.2)出现问题,当jQuery
.height()
试图计算其容器的高度时,在字体加载完成之前就已经计算出了高度。请考虑以下示例(查看:工作示例):/* CSS */
h1 {
font-family: MuseoSlab-500, "Helvetica Neue", Helvetica, Arial, sans-serif;
/* MuseoSlab-500 is defined using @font-face. */
}
/* HTML */
<div id="box">
<h1>This is my long header. What do you think? How about now?</h1>
</div>
/* JavaScript */
$(function() {
alert("The height of the above <div> = " + $('div#box').height());
});
然而,Firefox(v8.0.1)能够计算正确的高度,即在使用非标准字体呈现文本后。 问题是是否有一种实用的方法告诉Chrome,或者理想情况下是所有浏览器,在进行计算之前等待使用预期字体呈现文本。 使用
$(window).load()
是可行的,但这意味着需要等待所有图像加载完成,会导致速度变慢。
@font-face
的本地样式表?您提到可以从任何提供者加载样式表,但我不确定它是否适用于本地样式表。 - moey