【デザインをワンランクアップ】Safari/Chromeのテキスト入力・テキストエリアのグローをCSSでスタイリッシュに削除

2024-04-16

Safari/Chrome のテキスト入力要素とテキストエリアのグローを削除する CSS コード

SafariやChromeなどのブラウザでは、テキスト入力要素とテキストエリアにデフォルトでグロー効果が適用されます。このグロー効果は、入力フィールドがフォーカスされていることを視覚的に示すために役立ちますが、デザインによっては不要な場合もあります。

このチュートリアルでは、CSSを使用して Safari/Chrome のテキスト入力要素とテキストエリアのグローを削除する方法を説明します。

解決策

/* Safari/Chrome のテキスト入力要素とテキストエリアのグローを削除 */
input:-webkit-autofill,
textarea:-webkit-autofill,
input:-webkit-focus-ring,
textarea:-webkit-focus-ring {
  outline: none;
  border: none;
}

説明

上記の CSS コードは、以下の要素に影響を与えます。

  • input:-webkit-autofill: 自動入力されたテキスト入力要素

これらの要素に対して、outlineborder プロパティを none に設定することで、グロー効果を削除します。

補足

この CSS コードは、Safari と Chrome のみで有効です。他のブラウザでは、デフォルトのグロー効果が表示される可能性があります。

input,
textarea {
  outline: none;
  border: none;
}
#my-input,
#my-textarea {
  outline: none;
  border: none;
}



HTML

<!DOCTYPE html>
<html>
<head>
  <title>CSS - Safari/Chrome のテキスト入力要素とテキストエリアのグローを削除</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <h1>CSS - Safari/Chrome のテキスト入力要素とテキストエリアのグローを削除</h1>

  <form>
    <label for="name">名前:</label>
    <input type="text" id="name" name="name">

    <label for="message">メッセージ:</label>
    <textarea id="message" name="message"></textarea>

    <input type="submit" value="送信">
  </form>
</body>
</html>

CSS

/* Safari/Chrome のテキスト入力要素とテキストエリアのグローを削除 */
input:-webkit-autofill,
textarea:-webkit-autofill,
input:-webkit-focus-ring,
textarea:-webkit-focus-ring {
  outline: none;
  border: none;
}

このコードは、以下の要素を作成します。

  • フォーム
  • 名前用のテキスト入力フィールド
  • メッセージ用のテキストエリア
  • 送信ボタン

実行方法

  1. 上記の HTML と CSS コードをそれぞれ index.htmlstyle.css というファイルに保存します。
  2. Web ブラウザで index.html ファイルを開きます。

結果

テキスト入力フィールドとテキストエリアにフォーカスしても、グロー効果が表示されないことを確認できます。

  • すべてのブラウザでテキスト入力要素とテキストエリアのグローを削除するには、以下の CSS コードを使用することができます。
input,
textarea {
  outline: none;
  border: none;
}
#my-input,
#my-textarea {
  outline: none;
  border: none;
}



Safari/Chrome のテキスト入力要素とテキストエリアのグローを削除するその他の方法

/* Safari と Chrome のみでテキスト入力要素とテキストエリアのグローを削除 */
input:-webkit-autofill,
textarea:-webkit-autofill,
input:-webkit-focus-ring,
textarea:-webkit-focus-ring {
  outline: none;
  border: none;
}

/* Firefox でテキスト入力要素とテキストエリアのグローを削除 */
input[type="text"],
textarea {
  outline: none;
  border: none;
}

このコードは、user-agent セレクタを使用して、Safari と Chrome にのみ影響を与えるようにしています。

方法 2: JavaScript を使用する

// Safari と Chrome でフォーカス時にグロー効果を削除
const inputs = document.querySelectorAll('input, textarea');

for (const input of inputs) {
  input.addEventListener('focus', () => {
    input.style.outline = 'none';
    input.style.border = 'none';
  });

  input.addEventListener('blur', () => {
    input.style.outline = '';
    input.style.border = '';
  });
}

このコードは、focusblur イベントを使用して、フォーカス時にグロー効果を削除し、フォーカスが外れたときに元に戻します。

これらのライブラリは、ブラウザ間の一貫性を確保するために、多くのデフォルトの CSS スタイルをリセットします。その中には、テキスト入力要素とテキストエリアのグロー効果も含まれています。

Safari/Chrome のテキスト入力要素とテキストエリアのグローを削除するには、いくつかの方法があります。どの方法が最適かは、プロジェクトの要件と開発者の好みによって異なります。


css cross-browser


レスポンシブデザインに役立つ!JavaScriptでブラウザのビューポートの寸法を取得する

最も簡単な方法は、window. innerWidth と window. innerHeight プロパティを使うことです。これらのプロパティは、それぞれブラウザの幅と高さをピクセル単位で返します。window. innerWidth と window...


縦線でデザインをレベルアップ!HTMLとCSSのテクニック

特殊文字を使うHTMLには、縦線を含む様々な特殊文字が用意されています。例:&emsp;|&emsp;: 半角スペースと縦線(|)を半角スペースで挟む。<br>: 改行コード。<hr>: 横線(水平線)を挿入。この方法は、シンプルな縦線を引く場合に便利です。...


CSSでselectボックス内のテキストを中央揃えにする:その他の方法

select ボックス内のテキストを中央揃えにするには、いくつかの方法があります。それぞれの特徴と注意点、そして対応ブラウザについて詳しく解説します。方法 1: text-align プロパティを使う最もシンプルで基本的な方法は、text-align プロパティを center に設定することです。...


HTML と CSS を使って Font Awesome の歯車アイコンの色を変更する方法

Font Awesome の歯車アイコンの色を変更するには、HTML と CSS を使用して以下のいずれかの方法で行うことができます。方法 1: HTML にスタイルを追加するHTML タグに style 属性を追加することで、アイコンの色を直接変更できます。 以下の例では、歯車アイコン (fa-cog) の色を青色に変更しています。...


CSSでTwitter Bootstrap モーダルボディにスクロールバーを追加する方法

必要なものBootstrap 4.x またはそれ以上基本的な CSS の知識手順モーダルダイアログの . modal-dialog クラスに . modal-dialog-scrollable クラスを追加します。必要に応じて、モーダルボディの...


SQL SQL SQL SQL Amazon で見る



-webkit-appearanceプロパティでSafariのinput要素をカスタマイズ

Safariブラウザでは、input要素にフォーカスが当たると、青い枠線ハイライトが表示されます。このハイライトは、デザイン的に邪魔になる場合や、ユーザーインターフェースの統一感を損なう場合があり、削除したい場合があります。解決策このハイライトを削除するには、CSSの outline プロパティを使用します。outline プロパティは、要素の周りに描画されるアウトラインスタイルを制御します。