浏览器字体默认

时间:2010-09-08 09:30:23

标签: css fonts default font-family

假设我将页面正文的font-family设置为font1,font2,font3,然后将h1标记的font family设置为font4,font5。如果没有安装字体4和5,浏览器会在使用浏览器默认字体之前尝试字体1,2和3吗?

3 个答案:

答案 0 :(得分:5)

不,因为当您指定font-family时,字体堆栈不会从父元素继承,然后添加到。你给它一个全新的字体堆栈,与它的父元素分开。

如果您希望浏览器使用<h1>的前三种字体,则需要指定:

body { font-family: font1, font2, font3; }
h1 { font-family: font4, font5, font1, font2, font3; }

乏味,但这就是CSS font-family的工作方式:)

答案 1 :(得分:4)

简答:否

好问题。您正在谈论的功能称为继承。基本上,如果子元素未在用户的计算机上安装自己指定的font-family,那么它是否会继承父类的font-family。

我找不到任何明确的文档,尽管可以认为this specification意味着在这种情况下不会发生继承。因此,为了确保,我使用以下内容测试了最新稳定版本的Firefox:

<body>
    <p>Hello</p>
</body>

body {font-family: Arial;}
p {font-family: Quill;}

我没有安装Quill,但我确实有Arial。但是,尽管如此,p元素仍以默认的serif字体呈现,而不是Arial。

由于至少有一个主要的浏览器以这种方式运行,为了确保一致性,你应该总是使用它:

body {font-family: Arial;}
p {font-family: Quill, Arial;}

更多地考虑这一点,解决这个问题的一种方法是允许以下内容:

p {font-family: Quill, inherit}
p {font-family: Quill, default}

第二条规则基本上是浏览器目前所做的,但只是含蓄地。如果CSS允许我们明确指定最后一个属性,我们可以改变这种行为。不幸的是,目前这不起作用。有人知道如何向w3C提交建议吗?

答案 2 :(得分:2)

没了。它将默认为浏览器默认值。