疑似クラスの: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のスタイルを変えるというのは面倒ですしあまり意味がなさそう)。
個人的にはスマホはマウスカーソルが無い分、「前にどこをクリックしたのか」が分かった方が使いやすい気もします。

Nuxt.jsの「layouts」を使用してレイアウトの共通化を行う方法|Nuxt.jsの基本
ソースコードをハイライトする軽量ライブラリ「Highlight.js」の導入方法と使い方
Sassのマップ機能を使った変数の管理方法
Visual Studio CodeでSVGをプレビューする拡張機能「SVG Preview」
WordPressでbloginfo()の一部パラメーターの廃止・非推奨に注意!
EmmetのWrap with Abbreviationで複数行のマークアップを効率的に行う
様々な作業を自動化するgulpの基礎と導入方法
MAMPでローカル開発環境にWordPressをインストールする手順
コーディング時にちゃんと意識したい複数語の連結方法一覧(キャメルケース・スネークケース・ケバブケース)
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」
Gitで1行しか変更していないはずのに全行変更した判定になってしまう
Macでアプリごとに音量を調節できるアプリ「Background Music」
Macのターミナルでパスワード付きのZIPファイルを作成する方法
MacBook Proでディスプレイのサイズ調整をして作業スペースを広げる
SteerMouseの「自動移動」機能で保存ダイアログが表示されたら自動でデフォルトボタンへカーソルを移動させる
iPhoneでタッチが一切効かなくなった場合に強制再起動する方法