FFの選択ボックスからアウトラインを削除


97

select要素で選択されたアイテムを囲む点線を削除することは可能ですか?

代替テキスト

outlineCSSでプロパティを追加しようとしましたが、少なくともFFでは機能しませんでした。

<style>
   select { outline:none; }
</style>

アップデート
先に進んで概要を削除する前に、こちらをお読みください。
http://www.outlinenone.com/


3か月前に、同じことをラジオボタンで検索しました。私が見つけた5つまたは6つの異なるソリューション以上、何も機能しませんでした。だからあなたにはそれができないのではないかと思います。私が間違っているといいのですが。
Arseni Mourzenko

私もそれが事実だと思いますが、それでも間違いが証明されることを願っています:D
Martin

実際にモジラで働いている人間は、愚かな点線が見栄えが良いと思っていますか?なぜこれを削除する必要があるのですか?
ビリーノア2015年

回答:


74

私は解決策を見つけましたが、それはすべてのハックの母であり、うまくいけば、他のより堅牢な解決策の出発点として役立つでしょう。(私の意見では大きすぎる)欠点は、Modernizrなどのライブラリ(テストされていない、単なる理論)を使用しない限り、(IE 9)をtext-shadowサポートしていないがサポートしているブラウザーrgbaはテキストをレンダリングしないことです。

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の登場rgbaです。テキストシャドウはサポートされていますがサポートされていないため、明らかに空の選択ボックスが表示されます。text-shadow検出付きのModernizrのバージョンを入手して実行してください...

.no-textshadow select {
  color: #000;
}

楽しい。


おかげで、私はすぐにそれを試してみるつもりです:)
マーティン

実際に機能する唯一のソリューション(FF 20を使用)。おめでとう!
Gilberto Torrezan 2013

4
:これは、すべてのFFのみFFの世話取るべきである@-moz-document url-prefix() { ::-moz-focus-inner {border: none} select:-moz-focusring { color: transparent; text-shadow: 0px 0px 0px #000; } }
ティモKähkönen

Chromeや他のブラウザのCSSに影響しますか?
Dadhich Sourav、

165

まあ、Duopixelの答えは明白に完璧です。さらに一歩進めば、それを完全なものにすることができます。

select:-moz-focusring {
    color: transparent;
    text-shadow: 0 0 0 #000;
}

これで、Firefoxにのみ有効で、選択したオプションの周りの醜い点線のアウトラインはなくなりました。


1
興味深いことに、このソリューションはDuopixelの答えほど完全なものではありません。選択ボックス(-moz-transitionなど)でトランジション効果を使用すると、点線のボックスがトランジションの期間中表示され、その後消えます。つまり、「-moz-transition:all 0.5s ease;」を指定した場合、このソリューションではコンボボックスが0.5秒間表示されますが、Duopixelの回答ではまったく表示されません。これを回避するには、select要素全体を透明な色属性に設定しますが、ボックスにフォーカスがない場合はテキストがまったく表示されません。
2014年

1
編集:上記は、「このソリューションでは0.5秒間点線のボックスが表示されます...」と言う必要があります。コメントを編集できなくなりました。とにかく、「色:rgba(0,0,0,0);」プロパティは遷移を修正するものであり、select要素内にある必要があります。「-moz-focusring」は機能しません。また、興味深いことに、何らかの理由で、IE9とChromeの両方にDuopixelのソリューションを使用しても問題は発生しないので、彼が最後にModernizrと話していることはまったく必要ありませんでした。
2014年

もちろん、トランジションを指定すると表示されます。allトランジション内で使用することは、その場でガトリングガンを発射するようなものです。
Fleshgrinder 2014年

1
これまたはDuopixelのソリューションは、Mac MavericksのFF 33.0.3では機能しません。点線の輪郭の代わりに、青いぼやけた輪郭があります。
TimoKähkönen2014年

1
これは無効にされたオプションのブラウザスタイルを壊します-フォーカスされた選択がいったんフォーカスされると、それらは灰色のテキストの代わりに黒になります。
ビリーノア2018年

19

以下は、Firefoxの選択ボックスのスタイルに関する問題を修正するためのソリューションのコラボレーションです。このCSSセレクターを通常のCSSリセットの一部として使用します。

クラスは質問ごとにアウトラインを削除しますが、背景画像も削除します(通常、カスタムのドロップダウン矢印を使用しており、Firefoxesシステムのドロップダウン矢印は現在削除できません)。ドロップダウン画像以外の背景画像を使用している場合は、単に線を削除します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;
    }
}

とにかく、この方法を使用してオプションのテキストの色を定義する方法はありますか?
user1063287

実際には、ベンダー固有のプロパティ-moz-appearanceをに設定することで、SELECTバックグラウンドで使用されているFirefoxの矢印を削除できますnone
エマヌエーレデルグランデ

他の回答には重要なselect::-moz-focus-innerセレクターがないため、効果が低くなります。これが私のoneを取得する理由です。
デイ

select:-moz-focusring一緒にcolor: transparenttext-shadow: 0 0 0 #000FirefoxのV63での焦点に迷惑な境界線を削除
ジェイソン・ムーア

注:url-prefix()。fxsitecompat.dev/en-CA/docs/2018/…リンクを読んでいるので、段階的に廃止するかどうかはわかりません。しかし助言される。
user3342816

9

これはすべてのFirefoxバージョンをターゲットにします

@-moz-document url-prefix() { 
    select {
       color: transparent !important;
       text-shadow: 0 0 0 #000 !important;
    }
}

同じスタイルシートを使用するサイト内の他のページにアウトラインを表示する予定がある場合は、!重要を削除することをお勧めします。


1
これが選択された答えになるはずです
ブランドンスクリプト

9

一般に、フォームコントロールをその精度でスタイル設定することはできません。すべてのコントロールで賢明な範囲のプロパティをサポートしているブラウザはありません。画像やその他のHTML要素でフォームコントロールを「偽造」し、コードで元の機能をエミュレートする膨大なJavaScriptライブラリが存在するのは、このためです。

http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/

...


これを達成するには、「自分で作成する」選択リストを作成する必要があると思います。フォームコントロールがブラウザ間で統一されていないのは残念です。
マーティン

1
@Martin:これはスタイルすることができないファイルアップロードコントロールの柔軟性の欠如と比較するものではありません、すべてのほとんどのブラウザで。;)
Arseni Mourzenko

3

<select onchange="this.blur();">

これを使用すると、境界線はリストから項目を選択するまで残ります。


2
残念ながら、このソリューションはアクセシビリティとユーザビリティのガイドラインを尊重していません。視覚障害者向けのTTSインターフェイスに加えて、キーボードナビゲーションを許可しません。フォーカスされた要素は他の要素とは異なるように見えるはずですが、現在の質問の問題は、Firefoxでは方法を決定できないことです。
Emanuele Del Grande

1

次のいずれかを試してください。

a:active {
 outline: none;
 -moz-outline: none;
}

a {
-moz-user-focus: none;
}

参照


6
努力のためのThxが、残念ながらそれは機能しませんでした。多分それはa要素で動作しますが、要素では動作しませんでしたselect
マーティン

1

ここに解決策があります

:focus {outline:none;}
::-moz-focus-inner {border:0;}

1
テスト済み。動作しません。Firefoxはこのプロパティを認識しますが、何もしないようです。に設定しようとしましたが10px solid red、どこに表示されるかわかりません。
mpen 2017

他のすべての投票数の多い回答がうまくいかなかったとき、これは実際に私のために働きました。
Tashows

0

Firefoxのすべての選択可能なタグからアウトライン/点線の枠を削除します。

次のコード行をスタイルシートに配置します。

*:focus{outline:none !important;}   


-2
    input[type='range']::-moz-focus-outer {
    border: 0;
    outline: none !important;
    }

100%働く


-4

これにより、select要素とアウトラインからフォーカスが削除されます。

$("select").click(function(){
    $(this).blur();
});

ただし、これには他のブラウザの欠点がないわけではありません。ユーザーが使用しているブラウザを確認する必要があります。

if (FIREFOX) {
    //implement the code
}

コードスニペットを提供することに加えて、コードスニペットの機能を説明してください。
sayan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.