CSSのみで簡単に実装できる! マグネットのようにくっついて追従するホバーエフェクトを実装するテクニック

CSSの:has疑似クラスとCSS Anchor Positioningを使用して、:hoverにマグネットのように追従するホバーエフェクトを実装するテクニックを紹介します。

一昔前なら、JavaScriptなどを使用しないと実装できませんでしたが、今ではCSSのみで簡単に実装できます。

デモのキャプチャ

まずは、実際の動作をデモページでご覧ください。

See the Pen
Anchor Positioning :hover Cards
by coliss (@coliss)
on CodePen.

このエフェクトは、下記にインスパイアされて実装したとのことです。

デモのキャプチャ

画像: @vponamariov

また、@argyleinkもツールチップに変更して同様のエフェクトを実装しています。

See the Pen
View Transitions - Morphing Tip
by coliss (@coliss)
on CodePen.

では、実装のポイントを紹介します。
まずはHTML、mainをラッパーに各カードはリスト要素で配置されています。

各カードの配置は、CSS Gridです。

CSS Anchor Positioningとは、特定の要素を基準にしてその要素からポジションを指定できるCSSの機能(W3C)です。このCSS Anchor Pitioningと:has疑似クラスを使用して、このマグネットのようなホバーエフェクトを作成できます。

CSSの:hasについて詳しくは、下記をご覧ください。

CSSの:has()疑似クラスの便利な使い方を徹底解説

CSSの:has()疑似クラスの便利な使い方を徹底解説

リストに出入りするときにマグネットのようにくっついて追従させるには、トランジション遅延を使用します。

入る時に不透明度を遅延させ、出る時にポジションを遅延させます。そうすることで、よりスムーズなアニメーションになります。

元ネタは下記ポストより。

sponsors

top of page

©2024 coliss