2016-09-14 9 views
0

私は単純に4色のhtml/cssを使って簡単なカラーピッカーを作ろうとしています。htmlの選択オブジェクトからホバーカラーを削除するにはどうすればよいですか?

私が迷惑を掛けているのは、ドロップダウンのオプションの上にマウスを置くと、ホバー状態のため青に変わりますが、CSSでこれを無効にすることはできません。

私はselect:hoveroption:hoverのプロパティを試しましたが、何も動作していないようです。同じ効果を達成するライブラリを使用せずにこれに代わる方法がありますか?

function changeColor() { 
 
\t var c = this.options[this.selectedIndex].value; 
 
    document.getElementById("result").style.backgroundColor = c; 
 
} 
 

 
document.getElementById("colourPicker").addEventListener("change", changeColor);
body { 
 
    font-family: Arial, sans-serif; 
 
} 
 

 
#colourPicker { 
 
    width: 50px; 
 
} 
 

 
#result { 
 
    padding: 20px 20px 20px 20px; 
 
    border: 1px solid black; 
 
} 
 

 
.white { 
 
    background-color: #ffffff; 
 
} 
 

 
.red { 
 
    background-color: #ff0000; 
 
} 
 

 
.amber { 
 
    background-color: #ffa500; 
 
} 
 

 
.green { 
 
    background-color: #00b300; 
 
}
<div id="test"> 
 
Pick a colour: 
 
<select id="colourPicker"> 
 
    <option value="#ffffff" class="white"></option> 
 
    <option value="#ff0000" class="red"></option> 
 
    <option value="#ffa500" class="amber"></option> 
 
    <option value="#00b300" class="green"></option> 
 
</select> 
 
</div> 
 
<br><br> 
 
<div id="result"> 
 
<center>Result Colour</center> 
 
</div>

+0

CSSでネイティブのドロップダウンの動作を変更することはできません。おそらく、Select2のようなプラグインを使用してHTML要素に置き換えるべきです。 – Barmar

+1

[Select Select Listの背景色をhoverのhoverに変更]の可能な複製(http://stackoverflow.com/questions/17740391/change-select-list-option-background-colour-on-hover-in-html) –

+0

それをしないでください。お願いします。しないでください。モバイルでは、空白のオプションだけが表示され、その意味は何も表示されません。 '' 'を使用してください... –

答えて

2

あなたがすでに直面している問題に加えて、あなたの現在のデザインは、モバイルで見ると完全に崩れます。モバイルデバイスは一般に、使用可能なオプションとそれぞれのラジオボタンを特色とする特別なUIオーバーレイを表示します。この場合、空白のオプションは4つだけです。

ラジオボタンを代わりに使用することを検討してください。ラベルを使用してカラーオプションを表示することができます。たとえば...

.colourchoices>label { 
 
    display: inline-block; 
 
    border: 1px solid #000; 
 
    border-radius: 4px; 
 
    padding: 2px 4px 2px 2px; 
 
}
<p class="colourchoices"> 
 
    <label style="background-color:#ffffff"> 
 
    <input type="radio" value="#ffffff" name="col" />White 
 
    </label> 
 
    <label style="background-color:#ff0000;color:white"> 
 
    <input type="radio" value="#ff0000" name="col" /> Red 
 
    </label> 
 
    <label style="background-color:#ffa500;color:white"> 
 
    <input type="radio" value="#ffa500" name="col" /> Amber 
 
    </label> 
 
    <label style="background-color:#00b300;color:white"> 
 
    <input type="radio" value="#00b300" name="col" /> Green 
 
    </label> 
 
</p>

これはあなたが要素をスタイリングに関して好きなだけ自由を与える方法に注目してください。

+0

これは、代わりに私は望んでいた。どうもありがとう –

1

は、現在、ドロップダウンのオプションのスタイルを設定することはできません。あなたが持っている最良の選択肢は、順序付けられていないリストといくつかのCSS魔法を使うことです。チェックthis out

+1

私は、私は少し異なるアプローチをとるつもりですが、これは本質的に私の質問には答えられません。 –

+0

猫を肌に触れる方法は常に複数あります:)他の人が示唆しているように、ライブラリを使うことができます。しかし、ええ、それは現時点でスタイルにすることはできません。それぞれのブラウザは、それぞれ独自の方法でレンダリングします... –

+0

私は何かのためにライブラリを使用するのを避けようとしていますが、実際には常に複数の方法があります。:) –

関連する問題