疑似クラスの:hoverと:activeのスマホでの挙動の違い

:hoverと:activeでの挙動の違い
疑似クラスの:hoverを使うと、ホバー時のスタイルが適応できて、:activeを使うとクリック時のスタイルの適応ができます。
それぞれの疑似クラスの区別を整理すると、下記のようになります。
:hover= 要素にマウスカーソルが乗っているときのスタイル:active= 要素をクリックしたときのスタイル
しかし、スマホの場合はマウスカーソルがないため、下記のような挙動の違いが出てきます。
:hover= タップ後、違う要素がタップされるまでのスタイル:active= タップ中のみのスタイル
そのため、スマホで何かをタップするときはホバーとアクティブが順に適応され、ホバーのスタイルに関しては他の要素がタップされるまでスタイルが残り続けます。
See the Pen :hover and :active by Masakazu Saito (@31mskz10) on CodePen.
リンク以外のタップ
また、<a>などのリンク要素なら問題ありませんが、<div>などの本来はクリックしないような要素に:hover、:activeを付けている場合はうまく反応しないことがあります。
そんなときは、要素に ontouchstart="" を付ければ解決できます。
<div class="box" ontouchstart=""></div>まとめ
:hoverと:activeの挙動に関しては、知識として知っておくレベルで問題なさそうです(わざわざメディアクエリで横幅が小さいときは:hoverと:activeのスタイルを変えるというのは面倒ですしあまり意味がなさそう)。
個人的にはスマホはマウスカーソルが無い分、「前にどこをクリックしたのか」が分かった方が使いやすい気もします。

gzip圧縮をしてウェブサイトの表示スピードを上げる方法
MacVim-Kaoriyaのインストール方法
Vue.jsを使う人が最低限導入しておきたいVisual Studio Codeの拡張機能
ブラウザでこれ以上スクロールできない場合の挙動を制御する「overscroll-behavior」プロパティ
SourceTreeで環境設定の「カスタムアクション」「アップデート」「高度な設定」が選択できない
WordPressのwp_is_mobile()で条件分岐をするときは、キャッシュの設定に注意
WordPressって何なの?これからWordPressを勉強したい人がとりあえず知っておきたい事
Visual Studio Codeでパス補完機能を細かく設定して自分好みにできる拡張機能「Path Autocomplete」
「EWWW Image Optimizer」を使ってWordPressをWebPに対応する方法
gulpfile.jsにAutoprefixerのブラウザオプションを書くとエラーがでる場合の修正方法
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
macOSのシステム環境設定「Siri」の設定見直し
WebPに対応して画像サイズを最適化する方法
高速なzshのプラグインマネージャー「Zplugin」の導入方法
メニューアイコンにあるアプリの強制終了方法(アクティビティモニタ)
macOSのシステム環境設定「言語と地域」の設定見直し
Marpで既存Markdownファイルを使ったスライド作成時に、見出しごとにスライドを分割する方法
個人ブログにコメント欄は必要なのかどうか
毎日必ず行っている操作を少しでもラクにする!Macのカーソル操作関連の小技
サーバーの移行とブログのリニューアルをしました
Karabiner-Elementsでcommand単体押しで英かなキーを送信するように設定するとcommand + クリックが効かなくなる問題の修正