【发布时间】:2010-09-08 09:30:23
【问题描述】:
假设我将页面正文的font-family 设置为font1、font2、font3,然后将h1 标签的font family 设置为font4、font5。如果没有安装字体 4 和 5,浏览器会在使用浏览器默认字体之前尝试字体 1,2 和 3 吗?
【问题讨论】:
标签: css fonts default font-family
假设我将页面正文的font-family 设置为font1、font2、font3,然后将h1 标签的font family 设置为font4、font5。如果没有安装字体 4 和 5,浏览器会在使用浏览器默认字体之前尝试字体 1,2 和 3 吗?
【问题讨论】:
标签: css fonts default font-family
不,因为当您指定font-family 时,字体堆栈不会从父元素继承然后添加到。你给它一个全新的字体栈,独立于它的父元素。
如果您希望浏览器使用<h1> 的前三种字体,您需要指定:
body { font-family: font1, font2, font3; }
h1 { font-family: font4, font5, font1, font2, font3; }
乏味,但这就是 CSS font-family 的工作原理:)
【讨论】:
简短回答:否
好问题。您正在谈论的功能称为继承。本质上,如果用户的计算机上没有安装自己指定的字体系列,子元素是否会继承父元素的字体系列。
我找不到任何明确的文档,尽管this specification 可以被认为意味着在这种情况下不会发生继承。因此,为确保安全,我使用以下内容测试了最新的稳定版本的 Firefox:
<body>
<p>Hello</p>
</body>
body {font-family: Arial;}
p {font-family: Quill;}
我没有安装 Quill,但我有 Arial。然而,尽管如此,p 元素还是以默认衬线字体呈现,而不是 Arial。
由于至少有一个主流浏览器以这种方式运行,为了确保一致性,您应该始终使用它来代替:
body {font-family: Arial;}
p {font-family: Quill, Arial;}
对此进行更多思考,解决此问题的一种方法是允许以下操作:
p {font-family: Quill, inherit}
p {font-family: Quill, default}
第二条规则本质上是浏览器目前所做的,但只是隐含的。如果 CSS 允许我们明确指定最后一个属性,我们可以改变这种行为。不幸的是,这目前不起作用。有人知道如何向 w3C 提交建议吗?
【讨论】:
不。它将默认为浏览器默认值。
【讨论】: