本文へスキップ

拡大鏡ルーペ

画像にホバーまたはタッチした位置を丸いルーペで拡大表示する。PCはマウス追従、スマホはタッチ移動に対応。

ENGLISH

Image Magnifier (Loupe)

  • JS
約124行動きと演出 / メディア・画像 の一覧 →

プレビュー

ドラッグ

操作ドラッグ/スワイプで操作できます(PC・スマホ対応)。

仕様書

向く場面
  • 商品・生地・印刷物の細部確認
  • 地図・図版の部分拡大
  • 1枚の大きな写真を差し替えずに拡大したい
避ける場面
  • 小さすぎる画像(拡大しても粗い)
  • 文字を読ませる用途(拡大テキストを別に出す)
  • ページスクロール中に触る領域(touch-action none)
構成要素
  • 元画像
  • ルーペ
  • 操作ヒント
持っている状態
  • 通常
  • フォーカス
キーボード

Tab で画像に到達するとルーペが中央に出る。矢印キーで 10px(Shift で 40px)ずつ動かし、Esc で消す。ホバー/タッチも同じ

支援技術

画像は role=img と aria-label を持ち tabindex=0 で到達できる。ルーペは aria-hidden の装飾。拡大で見える細部は alt でも言語化する。reduce でフェード停止

動き

ルーペはポインタに即時追従(表示切替 150ms フェード)。倍率 2.5・半径 40px で位置ズレなく拡大。reduce では即時

デザインの要点

  • ルーペの背景は同じ画像を「元の寸法×倍率」で敷き、位置を −(x×倍率 − 半径) にする。倍率を変えてもズレない式
  • ポインタが画像の外に出た瞬間に hidden にする。境界で残ると拡大先が無い空のルーペが浮く
  • touch-action: none は画像だけに付ける。周りの本文まで付けると、その領域でページが縦にスクロールできない
  • 拡大は目で見る人だけの体験なので、細部は alt にも書き、キーボードでは矢印でルーペを動かせるようにする

コード(コピーして使えます)

<div class="mg-wrap" id="mgWrap">
  <!-- <img id="mgImg" src="..." alt="..."> に置き換えて使う -->
  <!-- ここでは background グラデで代用 -->
  <div class="mg-img" id="mgImg" role="img" tabindex="0" aria-label="サンプル画像(矢印キーでルーペを動かす)"></div>
  <div class="mg-lens" id="mgLens" aria-hidden="true" hidden></div>
  <p class="mg-hint">ホバー / タッチ / 矢印キーで拡大</p>
</div>

タグ

同じカテゴリ「メディア・画像」のほかのパーツ

関連パーツ