是否可以在悬停时更改选择列表选项的默认背景颜色?
HTML:
<select id="select">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
我试过 option:hover { background-color: red; }
了,但没有用。有人知道怎么做这个吗?
是否可以在悬停时更改选择列表选项的默认背景颜色?
HTML:
<select id="select">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
我试过 option:hover { background-color: red; }
了,但没有用。有人知道怎么做这个吗?
这可以通过实现插入框阴影来完成。例如:
select.decorated option:hover {
box-shadow: 0 0 10px 100px #1882A8 inset;
}
这里,.decorated
是分配给选择框的类。
希望你明白了。
Select / Option 元素由操作系统呈现,而不是 HTML。您无法更改这些元素的样式。
这样我们就可以通过最小的更改来做到这一点:)
<html>
<head>
<style>
option:hover {
background-color: yellow;
}
</style>
</head>
<body>
<select onfocus='this.size=10;' onblur='this.size=0;' onchange='this.size=1; this.blur();'>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
</body>
</html>
在 Firefox 上实现插入框阴影 CSS 工作:
select option:checked,
select option:hover {
box-shadow: 0 0 10px 100px #000 inset;
}
选中的选项在 Chrome 中有效:
select:focus > option:checked {
background: #000 !important;
}
在https://codepen.io/egle/pen/zzOKLe上有测试
对我来说,这适用于 Google Chrome 版本 76.0.3809.100(官方版本)(64 位)
我发现的关于此问题的最新文章 Chris Coyier(2019 年 10 月 28 日)https://css-tricks.com/the-current-state-of-styling-selects-in-2019/
问题是即使 JavaScript 也看不到option
悬停的元素。这只是为了强调仅使用 CSS 不会(至少很快)解决它:
window.onmouseover = function(event)
{
console.log(event.target.nodeName);
}
解决此问题的唯一方法(除了等待浏览器供应商修复错误数千年之外,更不用说影响您尝试做的事情了)是使用 JavaScript 将下拉菜单替换为您自己的 HTML/XML。这可能涉及使用元素替换select
元素以及每个元素ul
使用一个元素。radio
input
li
您可以这样做,只要知道它将更改整个 html 中的所有选择输入,它不会更改蓝色悬停,但会设置其他所有内容的样式。
option {
background: #1b1a1a !important;
color: #357b1d !important;
}
select {
background: #1b1a1a !important;
color: #357b1d !important;
}
// If you also want to theme your text inputs:
input {
background: #1b1a1a !important;
color: #357b1d !important;
}
我意识到这是一个较老的问题,但我最近遇到了这种需求,并使用 jQuery 和 CSS 提出了以下解决方案:
jQuery('select[name*="lstDestinations"] option').hover(
function() {
jQuery(this).addClass('highlight');
}, function() {
jQuery(this).removeClass('highlight');
}
);
和CSS:
.highlight {
background-color:#333;
cursor:pointer;
}
也许这对其他人有帮助。
这就是你需要的,子组合器:
select>option:hover
{
color: #1B517E;
cursor: pointer;
}
试试看,效果很好。