css - 在 Firefox 中设置没有选项的选择框样式

标签 css firefox

我正在尝试将选择框的样式设置为较暗的主题。问题是在 Firefox 中,选项框中选项的背景和颜色也会根据我的样式发生变化,这是我绝对不希望看到的。这是代码:

<!DOCTYPE html>
<html>
<head>
    <title></title>

    <style type="text/css">
        body {
            background: black;
        }
        select {
            background-color: rgba(0, 0, 0, 0.15);
            color: rgba(255, 255, 255, 0.85);
            border: 1px solid #111417;
        }
    </style>
</head>
<body>
    <select>
        <option value="0">Select car</option>
        <option value="1">Audi</option>
        <option value="2">BMW</option>
    </select>
</body>
</html>

这是选项框的截图:

Image

由于样式的应用,对比度很低。它在 Chrome 中完美运行,其中的选项框与以前相同。我该如何解决这个问题?

最佳答案

测试和发现

我做了一些实验,发现当用 rgba(0, 0, 0, 0.15) 指定时,Firefox 不使用选择下拉菜单的背景颜色。功能,但是当您使用 rgb(0, 0, 0) 时会这样做, #FFFFFFblack .带有一些测试的片段:

body {
  background: black;
  color: white;
}

select {
  width: 200px;
}

.select1 {
  background-color: rgba(0, 0, 0, 0.15);
  color: rgba(255, 255, 255, 0.85);
  border: 1px solid #111417;
}

.select2 {
  background-color: rgb(0, 0, 0);
  color: rgba(255, 255, 255, 0.85);
  border: 1px solid #111417;
}

.select3 {
  background-color: black;
  color: rgba(255, 255, 255, 0.85);
  border: 1px solid #111417;
}

.select4 > option {
    color: rgba(255, 255, 255, 0.85);  
}
.select4 > option:nth-child(2) {
  background: rgba(0, 0, 0, 0.15);
}
.select4 > option:nth-child(3) {
  background: rgba(0, 0, 0);
}
.select4 > option:nth-child(4) {
  background: black;
}
<h2>
Background: <code>rgba(0, 0, 0, 0.15)</code>
</h2>
<select class="select1">
  <option value="0">Select car</option>
  <option value="1">Audi</option>
  <option value="2">BMW</option>
</select>

<h2>
Background: <code>rgba(0, 0, 0)</code>
</h2>
<select class="select2">
  <option value="0">Select car</option>
  <option value="1">Audi</option>
  <option value="2">BMW</option>
</select>

<h2>
Background: <code>black</code>
</h2>
<select class="select3">
  <option value="0">Select car</option>
  <option value="1">Audi</option>
  <option value="2">BMW</option>
</select>

<h2>
Backgrounds on <code>&lt;option&gt;</code> Tags
</h2>
<select class="select4">
  <option selected value="default">Default</option>
  <option value="0">background: rgba(0, 0, 0, 1.5)</option>
  <option value="1">background: rgb(0, 0, 0)</option>
  <option value="2">background: black</option>
</select>

在 OS X 上的 Firefox 69 和 70(分别为当前稳定版和夜间版)中,第一个选择具有浅色背景和白色文本颜色(如您的屏幕截图所示),而第二个和第三个具有深色背景和指定的白色文本。

我不确定这是错误还是故意的。也许半透明的背景会给系统下拉带来麻烦。

有趣的是,Firefox 显然也允许样式化 <option>直接打标签。第四个示例的第二个、第三个和第四个选项具有不同的背景。同样,除了使用 rgba 的那个以外,其他所有的都作为 intendend。

在 Chrome 和 Safari 中,所有示例的下拉菜单看起来都一样,因为它们不允许对下拉菜单进行任何样式设置。

解决方法

您的问题的解决方法是使用 rgb 设置选择背景而不是 rgba , 而不是你会得到一个带有白色文本的深色下拉菜单,这将符合你的主题。

如果你真的需要使用 rgba 作为选择背景,你也可以设置 color将选项标签设置为黑色,以便与 Firefox 中的白色背景形成更好的对比。 Chrome 和 Safari 将完全忽略这些选项。但是,您需要在新的 Firefox 版本发布时对其进行测试。在 OS X 的 Chrome 和 Safari 上,如果您使用深色系统主题,您会看到深色主题的下拉菜单。如果 Firefox 效仿,但仍然允许您覆盖选项颜色,这将使您在深色背景上获得深色文本。

在任何情况下,您都需要检查您的解决方案在所有浏览器中的表现,因为对样式选择元素及其下拉列表的支持因供应商而异。

关于css - 在 Firefox 中设置没有选项的选择框样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57852069/

相关文章:

javascript - 如何在 Firefox 插件上使用 jQuery 1.5.2+?

javascript - Twitter Bootstrap 下拉菜单和面包屑不能很好地协同工作

css - iPad Retina 上的描边线帽

html - 为什么 first-of-type 不针对我的第一个脚注?

xml - Firefox 不读取 DTD?

python - RaspberryPi3 上的 WebDriverException : Message: invalid argument: can't kill an exited process with GeckoDriver, Selenium 和 Python

python - Python/Firefox headless 抓取脚本中的 "Failed to decode response from marionette"消息

javascript - Javascript 中的自定义滚动条行为?

asp.net - 更改代码隐藏中重复器元素的样式?

Firefox 的 CSS 修复 : Box shadow property