Slide 1

Slide 1 text

hoverと タッチスクリーンデバイス 2020.09.30 Kaori Shirahama @Frontend Conference Fukuoka スピンオフ ~福岡人大集合の会~

Slide 2

Slide 2 text

自己紹介 • しらはま かおり(@9v9Shira) • フロントエンド エンジニア at 株式会社トレタ • 普段はAngularでWebアプリ作ってる • 最近a11yへの興味が高まっている • 兵庫 → 福岡 → 東京

Slide 3

Slide 3 text

Q. タッチスクリーンデバイスでも hoverのスタイルを 指定するべきか?

Slide 4

Slide 4 text

PCブラウザ、タブレットブラウザ(iPad Safari) で同じスタイルをつけていた

Slide 5

Slide 5 text

:hover の挙動が PCブラウザとiPad Safariで違う…

Slide 6

Slide 6 text

iPad Safariでの挙動

Slide 7

Slide 7 text

デフォルトが背景青状態とする

Slide 8

Slide 8 text

タップすると :hover のスタイルが 適用される

Slide 9

Slide 9 text

指を離してもそのまま

Slide 10

Slide 10 text

他のところをタップすると :hover のスタイルが外れる

Slide 11

Slide 11 text

マウス、トラックパットでの操作は PCと同じ

Slide 12

Slide 12 text

タッチスクリーンデバイスにおける hoverの概念とは?

Slide 13

Slide 13 text

CSS の :hover 疑似クラスは、ユーザーがポインティング デバイスで要素に反応したものの、アクティブ化する必要 がないものを選択します。普通はユーザーがカーソル(マ ウスポインタ―)で要素の上をホバー(通過)させたとき にこの状態になります。 MDN Web Docs.「:hover - CSS: カスケーディングスタイルシート | MDN 」. https://developer.mozilla.org/ja/docs/Web/CSS/:hover, (参照 2020-09- 29) MDN :hover

Slide 14

Slide 14 text

CSS の :hover 疑似クラスは、ユーザーがポインティング デバイスで要素に反応したものの、アクティブ化する必要 がないものを選択します。普通はユーザーがカーソル(マ ウスポインタ―)で要素の上をホバー(通過)させたとき にこの状態になります。 MDN Web Docs.「:hover - CSS: カスケーディングスタイルシート | MDN 」. https://developer.mozilla.org/ja/docs/Web/CSS/:hover, (参照 2020-09- 29) MDN :hover メモ: :hover 疑似クラスはタッチスクリーンで問題になります。 ブラウザ―によっては、 :hover 疑似クラスが全く選択され なかったり、要素をタッチした直後だけ選択されたり、 ユーザーがタッチをやめるても選択され続け、他の要素に タッチするまで続いたりします。ウェブの開発者は、ホ バー機能が制限されていたり存在しなかったりしても、コ ンテンツにアクセスできるように考慮してください

Slide 15

Slide 15 text

タッチスクリーンには hoverの概念がないため 挙動が異なるのは仕方ない

Slide 16

Slide 16 text

どうするのが良い?

Slide 17

Slide 17 text

想定される入力方法 マウス ・ トラックパッドを 使う キーボードを使う タッチスクリーンを 直接操作する

Slide 18

Slide 18 text

マウス ・ トラックパッドを 使う タッチスクリーンを 直接操作する :hover の影響を受ける入力方法

Slide 19

Slide 19 text

マウス ・ トラックパッドを 使う タッチスクリーンを 直接操作する :hover の影響を受ける入力方法 良い影響を受ける 悪い影響を受ける

Slide 20

Slide 20 text

タッチスクリーンデバイスで マウス・タッチパッドを 使用するユーザーに hover時のスタイルを表示する タッチスクリーンで 直接操作するユーザーを 混乱させない どっちを優先する?

Slide 21

Slide 21 text

タッチスクリーンデバイスで マウス・タッチパッドを 使用するユーザーに hover時のスタイルを表示する タッチスクリーンで 直接操作するユーザーを 混乱させない 悪い影響をなくすことを優先

Slide 22

Slide 22 text

Q. タッチスクリーンデバイスでも hoverのスタイルを 指定するべきか?

Slide 23

Slide 23 text

A. タッチスクリーンデバイスでは hoverスタイルを 指定しない方が良い!

Slide 24

Slide 24 text

やったこと iPadだけスタイルを切った デバイスがiPadだったらclassに「.iPad」を付与するよ うにし、あとはCSSで調整

Slide 25

Slide 25 text

めでたし

Slide 26

Slide 26 text

気になること

Slide 27

Slide 27 text

メディア特性使えないかな?

Slide 28

Slide 28 text

hover any-hover pointer any-pointer メディア特性が 使えたら楽そうで いいなぁ

Slide 29

Slide 29 text

hover any-hover pointer any-pointer メディア特性が 使えたら楽そうで いいなぁ hover 一番使えそう

Slide 30

Slide 30 text

hover

Slide 31

Slide 31 text

hover none 主な入力手段で全くホバーできないか、差し支えなくホ バーすることができない、又は主な入力手段がない。 hover 主な入力手段で、要素の上で差し支えなくホバーするこ とができる。

Slide 32

Slide 32 text

hover none 主な入力手段で全くホバーできないか、差し支えなくホ バーすることができない、又は主な入力手段がない。 hover 主な入力手段で、要素の上で差し支えなくホバーするこ とができる。 hoverの挙動を保証できない hoverの挙動保証できる

Slide 33

Slide 33 text

• any-hover 入力メカニズムで、ユーザーが要素上でのホバーを使用す ることができるものがあるか • pointer 主要な入力メカニズムがポインティングデバイスである か、もしそうであればどれだけ正確なものであるか • any-pointer 入力メカニズムにポインティングデバイスがあるか、もし そうであればどれだけ正確なものか

Slide 34

Slide 34 text

試した

Slide 35

Slide 35 text

MacBook Pro Google Chrome any-hover : hover hover: hover any-pointer: fine pointer: fine

Slide 36

Slide 36 text

MacBook Pro Google Chrome any-hover : hover hover: hover any-pointer: fine pointer: fine 差し支えなくhoverができる 正確性の高いポインティング デバイスがある

Slide 37

Slide 37 text

iPad(第6世代)iPad Safari any-hover : none hover: none any-pointer: coarse pointer: coarse

Slide 38

Slide 38 text

iPad(第6世代)iPad Safari any-hover : none hover: none any-pointer: coarse pointer: coarse hoverの挙動を保証できない ポインティングデバイスはあるが 正確性が曖昧

Slide 39

Slide 39 text

Pixel3a Google Chrome any-hover : none hover: none any-pointer: coarse pointer: coarse

Slide 40

Slide 40 text

Pixel3a Google Chrome any-hover : none hover: none any-pointer: coarse pointer: coarse hoverの挙動を保証できない ポインティングデバイスはあるが 正確性が曖昧

Slide 41

Slide 41 text

hoverメディア特性 使えそう! (IE11では使えない)

Slide 42

Slide 42 text

まとめ

Slide 43

Slide 43 text

タッチスクリーンデバイスでは hoverスタイルを 指定しない方が良いぞ!

Slide 44

Slide 44 text

hoverスタイルの制御は hoverメディア特性が使えるぞ!

Slide 45

Slide 45 text

ありがとうございました!

Slide 46

Slide 46 text

参考 • デザイニングWebアクセシビリティ - アクセシブルな設計やコンテンツ制作のアプローチ https://www.amazon.co.jp/dp/4862462650 • コーディングWebアクセシビリティ - WAI-ARIAで実現するマルチデバイス環境のWebアプリケーション https://www.amazon.co.jp/dp/4862462669 • MDN web docs • https://developer.mozilla.org/ja/docs/Web/CSS/:hover • https://developer.mozilla.org/ja/docs/Web/CSS/@media/hover • https://developer.mozilla.org/ja/docs/Web/CSS/@media/any-hover • https://developer.mozilla.org/ja/docs/Web/CSS/@media/pointer • https://developer.mozilla.org/ja/docs/Web/CSS/@media/any-pointer etc…