【问题标题】:CSS Font-Family Support Dropped for <SELECT> in Firefox?Firefox 中 <SELECT> 的 CSS Font-Family 支持下降了吗?
【发布时间】:2017-02-14 12:52:35
【问题描述】:

以下 CSS 曾经在我测试过的所有浏览器中工作。它甚至还有一个选项选择器来处理 Firefox。

select,
option {
  font-family: "Lucida Console", Monaco, monospace;
}
<select>
  <option>PN-2345&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The first element&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hardware</option>
  <option>Pn-1332-CFG&nbsp;&nbsp;Second thing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Powdercoat</option>
</select>

最新版本的 Firefox 不再正确应用字体系列样式。 Firefox 的早期版本以及我测试过的所有其他主要浏览器都将字体系列设置完全应用于选择和下拉列表中的项目 - 现在,它只应用于选择框本身,而不应用于下拉列表。

Firefox 是否仍支持对下拉菜单的字体系列更改?如果有,怎么做?

【问题讨论】:

标签: css firefox drop-down-menu fonts


【解决方案1】:

我的理解是,Firefox 在某种程度上将选项的渲染委托给了操作系统,因此只能应用系统上安装的字体。在大多数情况下,您可以通过设置后备字体或至少一个通用系列来缓解这种情况,就像问题中的代码在规则末尾使用 , monospace 所做的那样。这就是我对this comment from bugzilla 的解释。

【讨论】:

    【解决方案2】:

    我做了一些实验,显然只要字体安装在本地,字体系列就会在&lt;option&gt; 元素中正确呈现。这显然是没有用的。

    如果有人有任何反驳我的信息,请告诉我们。

    【讨论】:

    • 看来你是对的,它只会显示本地安装的字体。您所能做的就是使字体堆栈尽可能好,这样您至少有一个不错的后备字体。
    【解决方案3】:

    您可以使用以下方法为 Firefox 中的 select 和 option 元素设置字体:

    select, option {
      font: -moz-pull-down-menu;
    }
    

    【讨论】:

    • 我试过这个,但结果与我想要的相反。我在 Firefox 中有一个下拉菜单,菜单是正确的字体,但下拉选项不同。但现在不是将 CSS font-family 属性从我的样式表应用到 options 它也完全从菜单中删除!
    【解决方案4】:

    这行得通吗?如果您愿意,可以使用此代码:)

    var ff = document.getElementById('sel');
    
    function font() {
      ff.style.fontFamily = "'" + ff.value + "', sans-serif";
    }
    select {
      font-family: 'Overpass', sans-serif;
    }
    
    option#diff {
      font-family: 'Ubuntu', sans-serif;
    }
    
    option#muli {
      font-family: 'Muli', sans-serif;
    }
    
    option#over {
      font-family: 'Overpass', sans-serif;
    }
    <link href="https://fonts.googleapis.com/css2?family=Muli:wght@300&family=Overpass:wght@300&family=Ubuntu:wght@300&display=swap" rel="stylesheet">
    <select id='sel' onchange='font()'>
      <option id='muli' value='Muli'>Muli yay</option>
      <option selected id='over' value='Overpass'>Overpass hooray</option>
      <option id='diff' value='Ubuntu'>Ubuntu is awesome</option>
    </select>

    【讨论】:

    • 不,sn-p 在 Firefox 中出现同样的错误 =(
    【解决方案5】:
    -moz-font-family:"Lucida Console", Monaco, monospace;
    

    【讨论】:

    • 请在您的答案中添加一些解释,以便其他人可以从中学习
    猜你喜欢
    • 1970-01-01
    • 2019-11-28
    • 2013-10-27
    • 2018-01-09
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    相关资源
    最近更新 更多