-webkit-appearanceプロパティでSafariのinput要素をカスタマイズ
CSSでinput要素の枠線ハイライトを削除する方法
Safariブラウザでは、input要素にフォーカスが当たると、青い枠線ハイライトが表示されます。このハイライトは、デザイン的に邪魔になる場合や、ユーザーインターフェースの統一感を損なう場合があり、削除したい場合があります。
解決策
このハイライトを削除するには、CSSの outline
プロパティを使用します。outline
プロパティは、要素の周りに描画されるアウトラインスタイルを制御します。
コード例
input {
outline: none;
}
上記コードは、すべての input
要素のアウトラインを非表示にします。
注意点
outline
プロパティは、フォーカス時のみハイライトを削除します。他の状態のハイライトを削除したい場合は、別の方法が必要です。outline
プロパティは、すべてのブラウザで同じように動作するわけではありません。一部のブラウザでは、ハイライトが完全に消えない場合があります。
代替方法
outline
プロパティ以外にも、ハイライトを削除する方法があります。
box-shadow
プロパティを使用して、フォーカス時にのみ影を表示する方法
これらの方法は、outline
プロパティよりも複雑な場合がありますが、より柔軟な制御が可能です。
- 上記コードは、すべての
input
要素に適用されます。特定のinput
要素のみハイライトを削除したい場合は、セレクタを調整する必要があります。 - 上記コードは、シンプルな例です。より複雑なデザインを実現するには、さらに CSS を調整する必要があります。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSSでinput要素の枠線ハイライトを削除する</title>
<style>
input {
outline: none;
}
</style>
</head>
<body>
<input type="text" placeholder="名前を入力">
<input type="text" placeholder="メールアドレスを入力">
</body>
</html>
上記コードを実行すると、input要素にフォーカスが当たっても、青い枠線ハイライトが表示されません。
その他のサンプル
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSSでinput要素の枠線ハイライトを削除する</title>
<style>
input {
outline: none;
border: 1px solid #ccc;
}
input:focus {
box-shadow: 0 0 0 2px #000;
}
</style>
</head>
<body>
<input type="text" placeholder="名前を入力">
<input type="text" placeholder="メールアドレスを入力">
</body>
</html>
CSSでinput要素の枠線ハイライトを削除する他の方法
outline
プロパティ以外にも、border
プロパティを使用して、input要素の枠線ハイライトを削除することができます。
input {
border: none;
}
input:focus {
border: 1px solid #ccc;
}
上記コードは、すべての input
要素の枠線を非表示にし、フォーカス時にのみ枠線を表示します。
input {
outline: none;
border: 1px solid #ccc;
}
input:focus {
box-shadow: 0 0 0 2px #000;
}
上記コードは、outline
プロパティを使用してハイライトを削除し、box-shadow
プロパティを使用してフォーカス時にのみ影を表示します。
-webkit-appearance プロパティを使用する
Safariブラウザのみで動作しますが、-webkit-appearance
プロパティを使用して、input要素の外観を変更することができます。
input {
-webkit-appearance: none;
}
- 上記の方法には、それぞれメリットとデメリットがあります。
- どの方法を使用するかは、デザインやブラウザの互換性などを考慮する必要があります。
css input safari