CSS辞書

:focus-visible

擬似クラス

要素がキーボードからフォーカスされた場合にのみ適用される擬似クラスです。マウスクリックによるフォーカスには適用されないため、アクセシビリティを向上させながら不要なフォーカスリングを避けられます。

構文

Syntax
:focus-visible { ... }

Tailwindでは

バリアント focus-visible: を先頭に付けて使います

focus-visible:outline-2:focus-visible { outline-width: 2px }

単なるfocus:よりfocus-visible:推奨(マウスクリックではリングを出さない)。

コード例

1

button:focus-visible { outline: 2px solid #3b82f6; }
実行結果
キーボードフォーカス時のみアウトライン表示
💡 左ボタン:Tabキーでフォーカス時のみアウトライン表示、右ボタン:アウトライン非表示

キーボードフォーカス時のみアウトラインを表示

2

.input:focus-visible { border-color: #3b82f6; box-shadow: 0 0 0 3px rgba(59,130,246,0.1); }
実行結果
フォーム入力フィールドのキーボードフォーカス
💡 マウスクリックでは境界線変化なし、Tabキーでフォーカス時のみ色変化

フォーム入力フィールドのキーボードフォーカス

💡 TIPS

アクセシビリティの向上に重要。:focusの代わりに使用することで、マウス操作時の不要なアウトラインを避けながら、キーボード操作時の視認性を確保。

⚠️ よくある間違い

:focusと同じと思い込む。マウスクリックでは適用されないことを理解する。古いブラウザでは動作しないため、フォールバックとして:focusも併用する。

🤖 AIがよく間違えるポイント

AIは今でも「フォーカスの枠を消す」ためにoutline: noneを単独提案することがありますが、キーボード利用者への重大なアクセシビリティ破壊です。正解は:focus-visibleで「キーボード操作時だけ」表示する使い分け。マウスクリックでは出ず、Tab移動では出る、という理想の挙動がJSなしで手に入ります。

💬 AIへの頼み方

このoutline: noneだらけのCSSを:focus-visibleベースの安全なフォーカス管理に書き換えて

そのままAIチャットに貼り付けて使える依頼文の例です。ページ上部の「AI用にコピー」でこのページ全体をコンテキストとして渡せます。

関連プロパティ

このプロパティを使ったUIレシピ

ブラウザサポート

Baseline 広く利用可能
Chrome
86+
Firefox
85+
Safari
15.4+
Edge
86+