テック技報最新号へ →
デザイン

ホバーの「オン・オフ」だけでなく、カーソルとの距離で要素を少しずつ拡大する(近接インタラクション)

カーソルが近づくほど、近くの要素が少しずつ大きく・濃くなる。macOSのDockのような、反応のある操作感を数行のJSで作る。

@gabriell_lab · 投稿 2026-05-29
#インタラクション#アニメーション#JavaScript#UI

どんな問題を解決するか / いつ使うか

ドック、ツールバー、アイコンの並びなどに、生き生きとした操作感を加えたいとき。

やり方

js
onpointermove = e =>
  document.querySelectorAll(".dock>*").forEach(el => {
    const r = el.getBoundingClientRect();
    // 要素の中心から120px以内なら 0〜1 の近さを計算
    const t = Math.max(0, 1 - Math.abs(e.clientX - r.x - r.width / 2) / 120);
    el.style.scale = 1 + t * 0.5; // 最大1.5倍
  });
  • 120(反応する距離)と 0.5(最大の拡大率)を調整する。拡大だけでなく、濃さ(opacity や filter)を変えてもよい。

注意点・対応状況

  • prefers-reduced-motion の環境では無効にする。
  • タッチ端末には効かないので、ホバーがなくても使えるようにしておく。
  • 元のコードは el. style とスペースが入っているが、正しくは el.style。

出典

X の元の投稿を開く