マウスカーソルにテキストを追従させる!おしゃれなホバーエフェクトの作り方【JavaScript】
スポンサーリンク

こんにちは!静岡県浜松市でWEBデザイナーをしています小瀧です。
Webサイトのデザインを強化するために、マウスカーソルにテキストを追従させるエフェクトを追加しませんか?

今回紹介する方法では、カーソルが特定のエリア内にあるときに、テキストがふわっと表示され、マウスに追従する動きを実装します。
シンプルなコードでおしゃれな演出ができるので、ぜひ試してみてください!

マウスカーソル追従エフェクトの実装方法

今回使用するコードでは、以下の動きを実現します。

  • カーソルが特定のエリア内に入るとテキストが表示される
  • カーソルが動くと、テキストがマウスに追従する
  • エリア外に出ると、ふわっと非表示になる

では、さっそく実装してみましょう!

See the Pen
Untitled
by 小瀧賢 (@ekwwawpb-the-styleful)
on CodePen.

HTMLコード

まずは、基本となるHTMLを用意します。

  • wrap クラスの div は、カーソルが動く範囲を指定するための要素です。
  • cursor-text クラスの a は、マウスカーソルに追従するテキスト要素です。

CSSコード


.wrap{
  height:500px;
  background:#3a3a3a;
}
.cursor-text {
    width: 150px;
    height: 150px;
    background-color: #fff;
    border-radius: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    position: fixed;
    left: 0;
    top: 0;
    font-size: 18px;
    font-weight: bold;
    color: #333;
    text-decoration: none;
    pointer-events: auto;
    opacity: 0;
    visibility: hidden; /* 最初は非表示 */
    transition: opacity 0.2s ease-out, visibility 0.2s ease-out;
  }
  • .wrapに背景色を設定し、カーソルの追従範囲を明確にする
  • .cursor-text に 丸いデザイン を適用し、中央にテキストを配置
  • .cursor-textposition: fixed; を使い、カーソルに追従できるようにする
  • 最初は opacity: 0; visibility: hidden; で非表示にし、カーソルが範囲に入ったら表示

JavaScriptコード

続いて、マウスカーソルの位置にテキストを追従させるためのJavaScriptを記述します。


const cursorText = document.querySelector(".cursor-text");
const conversionWrap = document.querySelector(".wrap");
        // マウスが移動したときに発動
        document.addEventListener("mousemove", (e) => {
            const rect = conversionWrap.getBoundingClientRect();

            // マウスが .wrap の内外にいるかを判定
            if (
                e.clientX >= rect.left && e.clientX <= rect.right &&
                e.clientY >= rect.top && e.clientY <= rect.bottom
            ) {
                // .wrap の内側にいる場合
                cursorText.style.opacity = 1;
                cursorText.style.visibility = "visible"; // 表示
                cursorText.style.transform = `translate(${e.clientX}px, ${e.clientY}px) translate(-50%, -50%)`;
            } else {
                // .wrap の外側に出た場合
                cursorText.style.opacity = 0;
                cursorText.style.visibility = "hidden"; // 非表示
            }
        });

ポイント解説

  • document.addEventListener("mousemove", (e) => {...}) → マウスの座標を取得し、カーソルの位置を更新
  • getBoundingClientRect() で .wrap の座標を取得 → マウスが .wrap内にあるかどうかを判定
  • .cursor-text の transform を変更 → translate(${e.clientX}px, ${e.clientY}px) でカーソルに追従
  • opacityvisibilityの変更で表示/非表示を制御 → .wrap の外に出ると非表示になる

応用カスタマイズ

1. テキストを変更する

"More" の部分を動的に変更することで、クリック時に別のメッセージを表示できます。

 cursorText.textContent = "Click!"; 

2. カラーを変える

背景色を変更して、サイトの雰囲気に合わせたデザインにカスタマイズできます。

 .cursor-text { background-color: rgba(0, 255, 255, 0.8); } 
スポンサーリンク

まとめ

  • マウスカーソルに追従するテキストを実装し、サイトのインタラクションを強化
  • JavaScriptの mousemove を活用し、スムーズな動きを実現
  • CSSでデザインを自由にカスタマイズできる
  • カーソルの範囲判定を getBoundingClientRect() で取得し、エリア内外で表示を切り替え

このエフェクトを使って、Webサイトのユーザー体験を向上させましょう!
ぜひ試してみてください。

静岡県浜松市でホームページ制作ならsatokotadesign
静岡県浜松市でホームページ制作ならsatokotadesign

 

 

こんなお悩みありませんか?
  • 実店舗の宣伝のためにホームページがほしい!
  • サイトをリニューアルしたい
  • スマホでも綺麗にサイトを表示したい
  • 予算が少ないからきちんと制作してもらえるか不安
  • ネットでの集客は成果が上がるのかわからない

そのお悩み全て解決します!

集客できるWebサイトをお求めやすい価格で制作します!

・個人だから他のWeb制作会社よりも圧倒的に安い!

・お客様に寄り添った完全オーダーメイド

お客様一人ひとりに寄り添い、親切丁寧に対応させていただきます。

一緒に素敵なWebサイトを作りましょう!

スポンサーリンク
おすすめの記事