8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【:focus-visible】フォーカス表示をタップ時は表示しないようにする

Last updated at Posted at 2022-08-18

これは何

outline: noneoutline: 0が当たっている要素に:focusでoutlineなどのフォーカス表示指定すると、Tabキーでフォーカスした時だけでなく要素をクリックした時にもフォーカス表示が表示されてしまう現象の解決方法です。

結論

:focusではなく:focus-visibleを使ってフォーカス表示を指定する。

本文

buttonaのようなフォーカスできる要素は、デフォルトでTabでフォーカスした際にoutlineが表示されるようになっています。

このoutline見た目のために0noneを指定して表示されなくすると、キーボード操作でWebを利用するユーザーが「今自分がどこの要素にフォーカスしているか」が視覚的に判断できなくなり、アクセシビリティが低下してしまいます。

🔽 リンクとボタンにoutline: noneが指定されているため、Tabでフォーカスしても視覚的にわからない

See the Pen outline:none by kabechiyo_shunkaaizawa (@kabechiyo) on CodePen.

そのため、outlineの値を0noneにすることはしないか、する場合は大体のフォーカス表示が必要になります。

普段コーディングをしている際はブラウザがデフォルトで表示されるようになっているので問題ないのですが、たまにreset.cssのような親要素や使用したライブラリに意図せずoutline: 0outline: noneが当たっていることがあります。

こうした時、フォーカス表示を表示させたい要素に:focusを使ってoutlineの指定をオーバーライドしてフォーカス表示を実装していました。
しかし、この:focusを使用することには一つ落とし穴があります。
それは、フォーカス表示がTabキーでフォーカスした時だけでなく要素をクリックやタップした時にも表示されてしまうことです。
(safariの場合は表示されません)

🔽無事フォーカス時に表示が出るようになったが、クリック時にもフォカース表示が出てしまう...

See the Pen Untitled by kabechiyo_shunkaaizawa (@kabechiyo) on CodePen.

ボタンをクリックした時にまでoutlineが表示されるのは好ましくありません。

そんな時に、:focus-visibleを使うと、Tabでフォーカスした時のみフォーカス表示を出すことができます!

:focus-visible 擬似クラスは、要素が :focus 擬似クラスに一致している時で、ユーザーエージェントが要素にフォーカスを明示するべきであると推測的に判断した場合に適用されます (多くのブラウザーではこの場合、既定で「フォーカスリング」を表示します)。

このセレクターは、ユーザーの入力方法 (マウスなのかキーボードなのか) によって異なるフォーカス表示を提供したい場合に便利です。

🔽無事フォーカス時に表示が出るし、クリック時には表示が出ないようになりました! :tada:

See the Pen :focus-visible by kabechiyo_shunkaaizawa (@kabechiyo) on CodePen.

こちらの方法は、キーボードのタブ移動時はoutlineを表示し、マウスクリック時は非表示にする | NullNullという記事で発見することができました :pray: 感謝

2022年8月現在、Can I use...で確認するとChrome, Edge, Safari, Firefox, Operaなどの最新版でサポートされているようです!

Ref

最後に

よければこんなCSSやアクセシビリティ、あとは普段よく記事を書いているFigmaなどについてDevトークで情報交換してくださる方を募集中です...! お気軽にご応募ください! :)

8
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?