マグネティック リンク(カーソルが寄る)

インタラクション Medium #js #cursor #magnetic #link

カーソルがボタンに近づくと、リンクがマウスへ吸い寄せられるように少しだけ動く演出です。仕組みは mousemove で要素の中心からカーソルまでの差を計算し、その距離を約3割に縮めて transform:translate に渡すというもの。

▶ プレビュー

解説

カーソルがボタンに近づくと、リンクがマウスへ吸い寄せられるように少しだけ動く演出です。仕組みは mousemove で要素の中心からカーソルまでの差を計算し、その距離を約3割に縮めて transform:translate に渡すというもの。カーソルが離れると translate(0,0) に戻り、元の位置へすっと戻ります。

ヒーローの主要ボタン、採用ページの応募リンク、ポートフォリオの問い合わせなど、ひとつの行動へ確実に誘導したい大事なリンクに向いています。マウスに反応する動きが、押したくなる感覚を生み出します。

調整と配慮

  • 吸い寄せの強さは座標に掛ける係数(例の 0.3)で変えられます。大きくすると大胆に、小さくすると控えめになります。
  • data-m 属性を付けた要素すべてに同じ動きが適用されるため、複数のボタンへまとめて使えます。
  • タッチ端末では動かないため、見た目だけでも押せると分かるデザインにしておきます。動きを嫌う利用者向けに無効化する配慮もあると丁寧です。

使用例・適したシーン

  • ナビゲーションのインタラクティブ装飾
  • ギャラリーのホバーリビール
  • サービスカードの強調

よくある質問

吸い寄せの強さを変えられますか。
変えられます。スクリプト内で座標に掛けている0.3の係数を上げると大きく動き、下げると控えめになります。0.15程度にすると上品な動きになります。
複数のボタンにまとめて使えますか。
使えます。動かしたい要素にdata-m属性を付ければ、同じ処理がすべてに適用されます。ボタンごとに個別のコードを書く必要はありません。
追加日:2026-05-15
← すべてのスニペットへ戻る