【问题标题】:Browser font defaulting浏览器字体默认
【发布时间】: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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢。很遗憾它像那样工作,会省点麻烦。
    【解决方案2】:

    简短回答:否

    好问题。您正在谈论的功能称为继承。本质上,如果用户的计算机上没有安装自己指定的字体系列,子元素是否会继承父元素的字体系列。

    我找不到任何明确的文档,尽管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 提交建议吗?

    【讨论】:

      【解决方案3】:

      不。它将默认为浏览器默认值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-05
        • 2014-08-10
        • 2012-07-19
        • 2012-01-29
        • 2016-04-15
        • 2012-12-25
        • 2013-02-20
        • 1970-01-01
        相关资源
        最近更新 更多