spでのタップ時の大きな画像が出る

アクセシビリティ的にも修正いるかなと思った細かい点

前提としてのhtml
 blockがクリックエリアとしてblock-imiageで背景画像を設置。
 hoverで画像切り替え
 基本クロームで閲覧
とした際に、iosなどでクリック・タップ時に画像が拡大したり縮小したりした。
windowsでもクリックエリア長押しで一部再現。

<div class="area">
  <a href="javascript:void(0)" class="block">
    <div class="block-image"></div>
  </a>
  <a href="javascript:void(0)" class="block">
    <div class="block-image"></div>
  </a>
</div>
.block {
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;               // ← ダブルタップズームも防ぐ
}
画像をhover時に切り替える際、
backgroundにすべての指定を書いている場合
.block-image {
    background: cover no-repeat url("image.png");
}
.block-image:hover {
    background: url("image2.png"); //ここで画像のみしていてもNG
}

.block-image:hover {
    background-image: url("image2.png"); //background-imageのみで指定する
}
iOS ではタップ時に :hover が瞬間的に適用→解除されます。
transition: 0.2s と組み合わさって「上に動く→戻る」が素早く起きるため、小さくなったように見えます。
タッチデバイスでは hover の transform を無効化
@media (hover: hover) {
    .modal-block:hover {
        transform: translateY(-2px);
    }
}
(hover: hover) はマウスなど真のホバーが使えるデバイスにのみ適用されます。タッチデバイスでは無視されるため、タップ時のちらつきがなくなります。

Spread the love
2026.04.30(木)