選択要素内の選択されたアイテムを囲む点線を削除することは可能ですか?
CSSでoutline
プロパティを追加しようとしましたが、少なくともFFでは機能しませんでした。
<style>
select { outline:none; }
</style>
更新
先に進んでアウトラインを削除する前に、これをお読みください。
http://www.outlinenone.com/
私は解決策を見つけましたが、それはすべてのハッキングの母であり、他のより堅牢な解決策の出発点として役立つことを願っています。マイナス面(私の意見では大きすぎる)は、text-shadow
をサポートしないがrgba
(IE 9)をサポートするブラウザーは、Modernizr(テストされていない、単なる理論)。
Firefoxは、テキストの色を使用して点線の境界線の色を決定します。もしそうなら...
select {
color: rgba(0,0,0,0);
}
Firefoxは点線の境界線を透明にします。しかしもちろん、テキストも透明になります!そのため、何らかの方法でテキストを表示する必要があります。 text-shadow
が助けになります:
select {
color: rgba(0,0,0,0);
text-shadow: 0 0 0 #000;
}
オフセットもぼかしもないテキストシャドウを配置し、テキストを置き換えます。もちろん、古いブラウザはこれについて何も理解していないため、色のフォールバックを提供する必要があります。
select {
color: #000;
color: rgba(0,0,0,0);
text-shadow: 0 0 0 #000;
}
これがIE9の登場です。IE9はrgba
をサポートしていますが、テキストシャドウはサポートしていないため、空の選択ボックスが表示されます。 text-shadow
検出を使用してModernizrのバージョンを取得し、...
.no-textshadow select {
color: #000;
}
楽しい。
Duopixelの答え は完璧です。さらに一歩進めば、防弾にすることができます。
select:-moz-focusring {
color: transparent;
text-shadow: 0 0 0 #000;
}
そこに行くと、Firefoxでのみ有効で、選択したオプションの周りのい点線の輪郭が消えています。
以下は、Firefoxのセレクトボックスに関するスタイリングの問題を解決するソリューションのコラボレーションです。このCSSセレクターを通常のCSSリセットの一部として使用してください。
クラスは質問ごとにアウトラインを削除しますが、背景画像も削除します(通常、カスタムのドロップダウン矢印を使用しており、Firefoxシステムのドロップダウン矢印は現在削除できません)。ドロップダウン画像以外に背景画像を使用している場合は、単にbackground-image: none !important;
@-moz-document url-prefix() {
select, select:-moz-focusring, select::-moz-focus-inner {
color: transparent !important;
text-shadow: 0 0 0 #000 !important;
background-image: none !important;
border:0;
}
}
一般に、フォームコントロールはその精度でスタイルを設定することはできません。すべてのコントロールで適切な範囲のプロパティをサポートするブラウザーはありません。これが、画像やその他のHTML要素でフォームコントロールを「偽造」し、元の機能をコードでエミュレートする膨大なJavaScriptライブラリが存在する理由です。
http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/
...
これは、すべてのFirefoxバージョンを対象とします
@-moz-document url-prefix() {
select {
color: transparent !important;
text-shadow: 0 0 0 #000 !important;
}
}
同じスタイルシートを使用するサイト内の他のページにアウトラインを表示する予定がある場合は、!importantを削除することをお勧めします。
<select onchange="this.blur();">
これを使用すると、リストから項目を選択するまで境界線が残ります。
ここに解決策があります
:focus {outline:none;}
::-moz-focus-inner {border:0;}
Firefoxのすべての選択可能なタグからアウトライン/点線の境界線を削除します。
スタイルシートに次のコード行を追加します。
*:focus{outline:none !important;}