Ответ 1
Это можно сделать, реализовав тень вставки. например:
select.decorated option:hover {
box-shadow: 0 0 10px 100px #1882A8 inset;
}
Здесь .decorated
- это класс, назначенный в поле выбора.
Надеюсь, вы поняли.
Можно ли изменить цвет фона по умолчанию для опции списка выбора при наведении?
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. Вы не можете изменить стиль для этих элементов.
Реализация теней CSS для вставных блоков работает в Firefox:
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
Для меня это работает на Гугл Хром Версия 76.0.3809.100 (Официальная сборка) (64-разрядная версия)
Проблема в том, что даже JavaScript не видит элемент option
, находящийся в движении. Это просто для того, чтобы подчеркнуть, что это не будет решено (по крайней мере, в ближайшее время) с помощью только CSS:
window.onmouseover = function(e)
{
console.log(e.target.nodeName);
}
Единственный способ решить эту проблему (кроме того, что многие поставщики браузеров ждут исправления ошибок, не говоря уже о тысячелетиях), не говоря уже о том, что мешает работе, вы можете заменить раскрывающееся меню собственным HTML/XML, используя JavaScript. Скорее всего, это будет связано с заменой элемента select
на элемент ul
и использованием элемента radio
input
на элемент li
.
В FF фильтр CSS работает отлично. Например. Оттенок поворота:
option {
filter: hue-rotate(90deg);
}
Я понимаю, что это старый вопрос, но я недавно столкнулся с этой проблемой и придумал следующее решение, использующее 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;
}
Попробуйте, отлично работает.
Здесь ссылка: http://www.w3schools.com/css/css_combinators.asp