我正在尝试将选择框的样式设置为较暗的主题。问题是在 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>
这是选项框的截图:
由于样式的应用,对比度很低。它在 Chrome 中完美运行,其中的选项框与以前相同。我该如何解决这个问题?
最佳答案
测试和发现
我做了一些实验,发现当用 rgba(0, 0, 0, 0.15)
指定时,Firefox 不使用选择下拉菜单的背景颜色。功能,但是当您使用 rgb(0, 0, 0)
时会这样做, #FFFFFF
或 black
.带有一些测试的片段:
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><option></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/