Css 在网页中导入许多google字体

Css 在网页中导入许多google字体,css,http,browser,fonts,stylesheet,Css,Http,Browser,Fonts,Stylesheet,例如,假设我导入了50种字体,如下所示: @import url("http://fonts.googleapis.com/css?family=Lora|Droid+Sans|Roboto..."); .font-lora{ font-family: "Loral"; } .font-droid-sans{ font-family: "Droid Sans"; } .font-roboto{ font-family: "Roboto"; } ... 但页面中只使用了

例如,假设我导入了50种字体,如下所示:

@import url("http://fonts.googleapis.com/css?family=Lora|Droid+Sans|Roboto...");

.font-lora{
   font-family: "Loral";
}

.font-droid-sans{
   font-family: "Droid Sans";
}

.font-roboto{
   font-family: "Roboto";
}

...
但页面中只使用了其中的2或3个类

我的问题是,如果在一个网页上导入那么多字体(实际上只会使用2-3种字体),是否会有任何不明显的副作用

据我所知,浏览器只在页面上有带有样式的元素时才请求字体。对吧?


我这样做是作为允许用户选择字体的界面的一部分,我注意到更改类比切换样式表要平滑得多

是/否。IE将加载它们加载所有内容,因为您使用的是@import浏览器将伸出手来抓取该文件。不要加载您不使用的字体,因为这些是额外的请求。以下是:

这看起来很明显,但如果您实际上没有使用字体,请不要在API中请求它。如果您在Firefox或Chrome中进行测试,您可能会错过这一点,因为Firefox或Chrome只加载在页面上呈现文本所需的字体文件。相比之下,Internet Explorer会加载所有请求的字体,即使它们没有实际使用


此外,您最好下载所有这些字体,然后将它们全部加载,以便在请求时将它们放在服务器上。

除了@BuiltInOneDay之外

当你在CSS中添加一个新的@font-face自定义网页字体时会发生什么?事实证明,这并不多。在几乎所有浏览器(IE8除外)中,仅仅包含@font-face块实际上并不能从服务器下载远程字体文件

那么,如何启动字体下载呢?偷看一下这个来源:

<!-- Initiates download in Firefox, IE 9+ -->
<div style="font-family: open_sansregular"></div>

<!-- Initiates download in Chrome, Safari (WebKit/Blink et al) -->
<div style="font-family: open_sansregular">Content.</div>
除了IE8之外,所有浏览器都会等到新节点被添加到文档中(未分离),正如前面提到的,WebKit/Blink浏览器甚至会等到节点包含文本内容

现在我们知道@font-face做对了什么。现在让我们把手弄脏


阅读来自Opera的Zach Leatherman的资料,了解更多信息:

这应该打开吗?您使用的是什么框架?您将看到的主要区别是客户端加载页面所需的时间。
<!-- Initiates download in Firefox, IE 9+ -->
<div style="font-family: open_sansregular"></div>

<!-- Initiates download in Chrome, Safari (WebKit/Blink et al) -->
<div style="font-family: open_sansregular">Content.</div>
/* Does not download */
var el = document.createElement('div');
el.style.fontFamily = 'open_sansregular';

/* Initiates download in Firefox, IE 9+ */
document.body.appendChild(el);

/* Initiates download in WebKit/Blink */
el.innerHTML = 'Content.';