Safari / Chrome textinput / textareaグローを削除します


337

CSSを使用してテキスト入力/テキスト領域をクリックしたときに、デフォルトの青と黄色の輝きを削除することは可能ですか?


6
@Steve、それを無効にするもう1つの理由は、サポートされていないアウトラインスタイルの代わりに:focusを使用して、すべてのブラウザーでグロー効果を機能させたい場合です。
Langdon

90
質問が技術的なものであるときに、何かが「正しいこと」であるかどうかについて人々が哲学的な会話を始めるとき、それは本当に迷惑です。
tim

2
私はオンラインスプレッドシートを作成しています、スティーブ、それは私の使用に適しています。場合によって異なりますが、単純なフォームの場合は、アウトラインをそのままにしておく必要があります。
william44isme 2013

4
それを無効にしてcssでカスタムの:focus効果を作成しても問題ないと思います...
ithil

また、何かを無効にする方法を知っていても、元に戻せないわけではありません。あらゆるクライアントのために働いている人なら誰でも、一方向にレンダリングされたものを見て、それを元のデフォルトの方法に戻すことを望んでいることを知っています。アクセシビリティについてそれらを講義することは、その欲求を変えることも、誰かを幸せにすることもありません。
JakeGould

回答:


623
textarea, select, input, button { outline: none; }

ただし、グロー/アウトラインを維持することは、ユーザーが現在どの要素に焦点を合わせているかを確認するのに役立つため、アクセシビリティにとって実際に有益であると主張されています。

疑似要素 ':focus'を使用して、ユーザーが入力を選択したときにのみ入力をターゲットにすることもできます。

デモ:https : //jsfiddle.net/JohnnyWalkerDesign/xm3zu0cf/


2
パーフェクト、ありがとうございました。また、(textareaの右下にある)textarea resizeオプションも削除できますか?
Alec Smart

3
注意のために+1。プラットフォームのパフォーマンスに対するユーザーの期待に反するようなことはしないようにしてください。あなたは実際に彼らの生産性を損ない、あなたのウェブサイトを使いにくくしているかもしれません。
Rob

6
自分の危険で私のchrome / safari textareaサイズ変更オプションを削除してください!私はそれが本当に役立つ、いくつかのサイトでも不可欠であると思います。
JeeBee

5
サイズ変更ハンドルを取り除くため:resize:none;
ダニエル

22
ボックスシャドウ:なし;
スタイクス

92

この効果は、非入力要素でも発生する可能性があります。より一般的な解決策として次の作品を見つけました

:focus {
  outline-color: transparent;
  outline-style: none;
}

更新::focusセレクターを使用する必要がない場合があります。たとえば、要素があり、<div id="mydiv">stuff</div>このdiv要素に外側の輝きがあった場合は、通常のように適用します。

#mydiv {
  outline-color: transparent;
  outline-style: none;
}

これは、たとえば<button>エレメントの場合に機能しますが、ほとんどの場合、クリックオンしているため、グローオンフォーカスのメリットは特にありません。
カシミール2013年

1
受け入れられた回答は、OSX上のChromeでは機能しませんでした。このソリューションは、仕事をしました。
バート

また、この手法を使用すると、フォーカスを維持できますが、完全に削除するのが十分ではない場合は、アウトラインの値を選択した無地の色などに再定義して、サイトのスタイルに合わせます。
Neil Monroe、

1
最新バージョンの45.0.2454.101 m
Chrome

@ Carl-Wからのこの回答は見落とさないでください。-これは、jQueryを使用してdivであるアンカーにリンクするときに役立ちました。私はdivでiframeを再読み込みしてから、再読み込みせずに手動でアンカーに移動しました。ページをアンカーまで下にスクロールしますが、div全体が青い外側の輝きを持っていました。このCSSをdiv要素に追加すると、うまくいきました!-注:私は使用していない:focusセレクタのために、私はちょうど置くoutline-coloroutline-style私のdivのCSSに。
Wade

13

Webkitベースのブラウザーでのテキストエリアのサイズ変更:

textareaにmax-heightとmax-widthを設定しても、視覚的なサイズ変更ハンドルは削除されません。試してください:

resize: none;

(はい、私は「ユーザーの期待に反することは何もしないようにしてください」に同意しますが、場合によっては、つまり、Webアプリケーションのコンテキストでは意味があります)

Webkitフォーム要素の外観を最初からカスタマイズするには:

-webkit-appearance: none;

3
リサイズのための可能な値は次のとおりです。それは完全に無効にすることなく、いくつかのレイアウトとの相互作用を修正する可能性がある、一方向にのみサイズ変更を許可することも可能ですnonebothhorizontalvertical、とinherit
Boann

ここで提供されているソリューションは「-webkit-appearance:none;」で気に入っています。-すべてのスタイルを入力要素から削除するため、必要に応じてスタイルを設定できます。ありがとう!
hanazair 2014年

なぜこれが非常に多くの賛成票を持っているのか私にはわかりません、それは質問に対する答えではありません。
paddotk 2017

7

カールW

この効果は、非入力要素でも発生する可能性があります。より一般的な解決策として次の作品を見つけました

:focus {
  outline-color: transparent;
  outline-style: none;
}

これについて説明します。

  • :focusフォーカスされている要素にスタイルを設定することを意味します。そこで、フォーカスされている要素にスタイルを設定します。
  • outline-color: transparent; 青い輝きが透明であることを意味します。
  • outline-style: none; 同じことをします。

5

divクリックイベントがあったでこれを経験し、20回の検索の結果、このスニペットが私の一日を救ってくれたことがわかりました。

-webkit-tap-highlight-color: rgba(0,0,0,0);

これにより、Webkitモバイルブラウザーでのデフォルトのボタンの強調表示が無効になります


4

これは、アクセシビリティを気にする人のためのソリューションです。

outline:none;フォーカスのアウトラインを無効にするために使用しないでください。これを行うと、Webのアクセシビリティが失われます。これを行うためのアクセス可能な方法があります。

この記事をチェックしてくださいアクセシブルな方法でボーダーを削除する方法を説明するために私が書いを。

簡単に言うと、キーボードのユーザーを検出したときにのみ輪郭線を表示するというものです。ユーザーがマウスを使い始めると、アウトラインが無効になります。その結果、2つの中から最高のものが得られます。


2

Bootstrapのボタンからグローを削除したい場合(私の考えでは必ずしも悪いUXではありません)、次のコードが必要になります。

.btn:focus, .btn:active:focus, .btn.active:focus{
  outline-color: transparent;
  outline-style: none;
}

ありがとう。.btn:active:focus実際にボタンを押しながらグローを削除する必要がありました。
homerjam 2015年

2

この解決策は私にとってうまくいきました。

input:focus {
    outline: none !important;
    box-shadow: none !important;
}

1

ボタンが外線を削除するために使用されることもあります。

input:hover
input:active, 
input:focus, 
textarea:active,
textarea:hover,
textarea:focus, 
button:focus,
button:active,
button:hover
{
    outline:0px !important;
}

0
<select class="custom-select">
        <option>option1</option>
        <option>option2</option>
        <option>option3</option>
        <option>option4</option>
</select>

<style>
.custom-select {
        display: inline-block;
        border: 2px solid #bbb;
        padding: 4px 3px 3px 5px;
        margin: 0;
        font: inherit;
        outline:none; /* remove focus ring from Webkit */
        line-height: 1.2;
        background: #f8f8f8;

        -webkit-appearance:none; /* remove the strong OSX influence from Webkit */

        -webkit-border-radius: 6px;
        -moz-border-radius: 6px;
        border-radius: 6px;
    }
    /* for Webkit's CSS-only solution */
    @media screen and (-webkit-min-device-pixel-ratio:0) { 
        .custom-select {
            padding-right:30px;    
        }
    }

    /* Since we removed the default focus styles, we have to add our own */
    .custom-select:focus {
        -webkit-box-shadow: 0 0 3px 1px #c00;
        -moz-box-shadow: 0 0 3px 1px #c00;
        box-shadow: 0 0 3px 1px #c00;
    }

    /* Select arrow styling */
    .custom-select:after {
        content: "▼";
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        font-size: 60%;
        line-height: 30px;
        padding: 0 7px;
        background: #bbb;
        color: white;

        pointer-events:none;

        -webkit-border-radius: 0 6px 6px 0;
        -moz-border-radius: 0 6px 6px 0;
        border-radius: 0 6px 6px 0;
    }
</style>

0

「スライディングドア」タイプの入力ボタンのアウトラインを削除すると、アウトラインがスライディングドアの画像の右側の「キャップ」を覆わないため、フォーカスの状態が少し不安定に見えるので便利です。

input.slidingdoorbutton:focus { outline: none;}

0

この影響をテキスト入力フィールドから削除するだけで、他の手法を正しく機能させることができませんでしたが、これが私にとってはうまくいきました。

input[type="text"], input[type="text"]:focus{
            outline: 0;
            border:none;
            box-shadow:none;

    }

FirefoxおよびChromeでテスト済み。


0

承知しました!*を使用して、すべてのHTML要素から青い枠線を削除することもできます

*{
    outline-color: transparent;
    outline-style: none;
  }

そして

 *{
     outline: none;   
   }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.