2012-05-07 101 views
34

ホバーで選択リストオプションのデフォルトの背景色を変更することはできますか?選択リストを変更するオプション背景色にホバー

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; }を試してみましたが、それは役に立ちません。誰もこれを行う方法を知っていますか?

+2

一部のブラウザでは可能ですが、そうでないブラウザでも可能です。通常、フォーム要素はブラウザではなくOSによってレンダリングされるので、CSSは必ずしも適用されるわけではありません。 –

+1

ブラウザで可能ですか? – vipin8169

答えて

9

選択/オプション要素は、HTMLではなくOSによってレンダリングされます。これらの要素のスタイルは変更できません。

+26

これはかなり古い質問です。あなたがこの時点で答えを加えるつもりなら、リファレンスを使ってそれを精巧にしたりサポートしたりしてください。 –

32

これは、インセットボックスの影を実装することによって実行できます。 例:

ここ
select.decorated option:hover { 
    box-shadow: 0 0 10px 100px #1882A8 inset; 
} 

.decoratedは、選択ボックスに割り当てられたクラスです。

希望があります。

+11

+1素晴らしいアイデア!しかし、 'option:checked 'は' option:hover'よりもうまく機能します。しかし、どちらもFirefox上でしか動作しないようだ。 – Oriol

+1

クロムには何か影響はありますか? – GumZ

+1

私のアプローチは、単に「選択」要素のように振る舞う完全に異なる要素を作ることでした。基本的には内部にリストを持つdivです。 – Diogo

-5

これは、何が必要子コンビネータです:

select>option:hover 
    { 
     color: #1B517E; 
     cursor: pointer; 
    } 

は完璧に動作し、それを試してみてください。

ここに参照です:http://www.w3schools.com/css/css_combinators.asp

+1

Firefoxでは、デフォルトのスタイルは 'option:checked {background-color:-moz-html-cellhighlight!important;色:-moz-html-cellhighlighttext!重要; } '。次に、重要なプロパティを使用していても、内部の重要なプロパティをオーバーライドできないという問題があります。 – Oriol

+0

Chromeでは動作しません。 – Lev

-2

私はこれは古い質問です実現が、私は最近、このようなニーズに出くわしたと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; 
} 

これはおそらく他の人に役立ちます。インセットボックスシャドウCSSを実装

+0

オペレーティングシステムによって背景色の_getが上書きされたため、これは機能しません。これは単に 'option:hover'を使うのと同じです。私はマウスをオプションの上に置いているうちにキーボードを使い始めるとスクリプトが壊れてしまうので、堅牢ではありません。 – doppelgreener

4

は、Firefoxで動作します:

select option:checked, 
select option:hover { 
    box-shadow: 0 0 10px 100px #000 inset; 
} 

チェックオプションアイテムはChromeで動作します:FFで

select:focus > option:checked { 
    background: #000 !important; 
} 
+2

クロムには対応していません – deemi

0

問題でもJavaScriptがoption要素が推移している見ていないということです。これはただ単にCSSを使用することによって、(少なくともいつでもすぐに)解決されることはないだろうかに重点を置くことです:

window.onmouseover = function(e) 
{ 
console.log(e.target.nodeName); 
} 

(この問題を解決するためにだけ方法ブラウザベンダーのための千年を待っているほかバグを修正するには、あなたがやろうとしていることに悩まされるものはもちろんですが)JavaScriptを使ってドロップダウンメニューを独自のHTML/XMLに置き換えることです。これは、select要素をul要素に置き換え、要素ごとにradioinput要素を使用することを使用する可能性があります。

関連する問題