假设我将页面正文的font-family
设置为font1,font2,font3,然后将h1
标记的font family
设置为font4,font5。如果没有安装字体4和5,浏览器会在使用浏览器默认字体之前尝试字体1,2和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)
没了。它将默认为浏览器默认值。