ホバー時に選択リストオプションのデフォルトの背景色を変更することは可能ですか?
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ではなくOSによってレンダリングされます。これらの要素のスタイルを変更することはできません。
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 にテストがあります
私にとってこれはChromeバージョン76.0.3809.100(公式ビルド)(64ビット)で動作しています
問題は、JavaScriptでさえnotホバーされているoption
要素を参照することです。これは、CSSだけを使用して(少なくともいつでも)解決されない方法に重点を置くためです。
window.onmouseover = function(e)
{
console.log(e.target.nodeName);
}
のみこの問題を解決する方法(ブラウザベンダーがバグを修正するのを何千年も待っているだけでなく、あなたがやろうとしていることを妨げるものは言うまでもありません)は、ドロップダウンメニューを独自のものに置き換えることですJavaScriptを使用したHTML/XML。これには、select
要素をul
要素に置き換えることと、radio
要素ごとにinput
li
要素を使用することが含まれる可能性があります。
FFでもCSSフィルターは正常に機能します。例えば。色相回転:
option {
filter: hue-rotate(90deg);
}