これを行うためのシンプルで適切な方法を見つけました。クロスブラウザで、分解可能で、フォームの投稿を壊しません。まず、選択ボックスの不透明度を0に設定します。
.select {
opacity : 0;
width: 200px;
height: 15px;
}
<select class='select'>
<option value='foo'>bar</option>
</select>
これはあなたがまだそれをクリックできるようにするためです
次に、選択ボックスと同じサイズのdivを作成します。divは、選択ボックスの下に背景として配置する必要があります。これを実現するには、{position:absolute}とz-indexを使用します。
.div {
width: 200px;
height: 15px;
position: absolute;
z-index: 0;
}
<div class='.div'>{the text of the the current selection updated by javascript}</div>
<select class='select'>
<option value='foo'>bar</option>
</select>
JavaScriptでdivのinnerHTMLを更新します。jQueryによるEasypeasy:
$('.select').click(function(event)) {
$('.div').html($('.select option:selected').val());
}
それでおしまい!選択ボックスの代わりにdivをスタイルするだけです。私は上記のコードをテストしていないので、おそらくそれを微調整する必要があります。しかし、うまくいけば、あなたは要点を理解することができます。
このソリューションは{-webkit-appearance:none;}に勝ると思います。ブラウザがせいぜい何をすべきかは、フォーム要素との相互作用を指示することですが、サイトのデザインを損なうため、ブラウザが最初にページにどのように表示されるかは間違いありません。