これを行うための簡単でまともな方法を見つけました。クロスブラウザーであり、分解可能で、フォームの投稿を壊しません。まず、選択ボックスの不透明度を 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>
div の innerHTML を JavaScript で更新します。jQueryで簡単に:
$('.select').click(function(event)) {
$('.div').html($('.select option:selected').val());
}
それでおしまい!選択ボックスの代わりに div をスタイルするだけです。上記のコードはテストしていないので、おそらく微調整が必要になるでしょう。しかし、うまくいけば、要点がわかります。
このソリューションは {-webkit-appearance: none;} よりも優れていると思います。ブラウザがすべきことは、フォーム要素との相互作用を指示することですが、サイトのデザインを壊すため、ページに最初に表示される方法は絶対に指示しないでください。