浏览器字体默认设置

3
如果我将页面主体的font-family设置为font1、font2、font3,然后将

标签的font-family设置为font4、font5。如果没有安装字体4和5,那么浏览器会在使用默认字体之前尝试使用字体1、2和3吗?

3个回答

5
不可以,因为当您指定 font-family 时,字体堆栈不会从父元素继承并添加到其中。相反,您给它一个全新的字体堆栈,与其父元素分开。
如果您想让浏览器使用前三种字体来显示 <h1> 文字,您需要明确指定。
body { font-family: font1, font2, font3; }
h1 { font-family: font4, font5, font1, font2, font3; }
< p> 繁琐,但这就是 CSS font-family 的工作方式 :)


谢谢。很遗憾它是这样工作的,本来可以节省一些麻烦的。 - Ryan

4

简短回答:不会

好问题。你在谈论的功能是继承(inheritance)。本质上,如果用户计算机上没有指定的字体,子元素会继承父元素的字体吗?

我找不到任何明确的文档,虽然这个规范可能意味着在这种情况下不会发生继承。因此,为了确定,我使用最新的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提交建议吗?

2
不会。它将默认为浏览器默认设置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接