会員ログイン
DOM・イベント

コピペでOK!マウスの動きに合わせてデザインを移動させる方法

コピペでOK!マウスの動きに合わせてデザインを移動させる方法のアイキャッチ画像
はじめに
概要
本ページで実装中のマウスの動きに合わせて、円を移動させる方法を解説します。こちらのJavascriptを用いてアニメーションさせています。
※本記事の情報は執筆時点のものであり、閲覧時点では変更されている可能性があります。また、ご利用の環境によっては、本記事の内容が正常に動作しないことがあります。最新の情報については、公式サイトなどでご確認ください。
疑問を持つ読者のイラスト読者

コピペでOK!マウスの動きに合わせて デザインを移動させる方法は、最初にどこを理解するとよいですか?

著者・木村のプロフィール写真木村

対象要素を取得する処理、動作を始める条件、見た目を変える処理の三つに分けると、コードの流れを追いやすくなります。

話を聞く読者のイラスト読者

実際に試すときは、手順だけでなく確認方法も知っておいた方がよいでしょうか?

著者・木村のプロフィール写真木村

はい。この記事では、作業の目的から実装後の確認までを順番に整理します。自分の環境と照らし合わせながら読み進めてください。

実装に必要なコード

実装に必要なコードでは、コピペでOK!マウスの動きに合わせて デザインを移動させる方法を理解・実装するために必要な考え方と、作業時に確認したい点を整理します。最初に役割を把握してから、記事内の手順へ進みましょう。

HTML:
<div class="mouse"></div><!-- /.mouse -->
クラス名は任意です。ここではmouseとしています。 CSS:
.mouse {
   width: 24px;
   height: 24px;
   background: red;
   border-radius: 50%;
   position: fixed;
   top: 0;
   left: 0;
   z-index: 10;
   pointer-events: none;
 }
どのようなデザインでも結構です。ここでは赤い円を作成しました。 Javascript:
// ".mouse" クラスを持つ最初の要素を取得して、変数 mouse に格納します。
const mouse = document.querySelector(".mouse");
// デバッグのため、mouse の内容をコンソールに出力します。
console.log(mouse);

// ウィンドウ上でマウスが動いたときに発火するイベントリスナーを設定します。
window.onmousemove = (e) => {
  // マウスの現在のX座標から、要素の幅の半分を引いて、要素の中心がカーソルに来るようにします。
  const x = e.clientX - mouse.offsetWidth / 2;
  // マウスの現在のY座標から、要素の高さの半分を引いて、同じく要素の中心がカーソルに来るようにします。
  const y = e.clientY - mouse.offsetHeight / 2;

  // translate CSSプロパティを用いて要素を移動させるためのオブジェクトです。
  const mouseMoveStyle = {
    transform: `translate(${x}px,${y}px)`, // X軸とY軸に沿って要素を動かすスタイルを設定
  };

  // X座標とY座標をコンソールに出力します(デバッグ用)。
  console.log(x);
  console.log(y);

  // mouse 変数に格納された要素にアニメーションを適用します。
  // 第一引数はアニメーションのキーフレーム(ここでは移動のスタイル)、
  // 第二引数はアニメーションのオプションです。
  mouse.animate(mouseMoveStyle, {
    duration: 1000, // アニメーションの継続時間は1000ミリ秒(1秒)
    fill: "forwards", // アニメーションが完了した後も要素を最終状態に保持します
  });
};
  コメントとコンソール付きでコードを記述しております。詳細は以下の通りです。

実装に必要なコードで押さえたいポイント

実装に必要なコードは、コードや設定だけを切り離して覚えるより、何を変えるための処理なのかを確認してから試すと理解しやすくなります。変更前の状態を控え、作業を一つずつ反映すると、問題が起きた場所も特定しやすくなります。

実装に必要なコードの確認方法

ブラウザーのコンソールにエラーがないかを確認し、クリックやスクロールを繰り返してもイベントが重複しないかを試します。スマートフォン幅とキーボード操作も確認してください。

コードの解説

コードの解説では、コピペでOK!マウスの動きに合わせて デザインを移動させる方法を理解・実装するために必要な考え方と、作業時に確認したい点を整理します。最初に役割を把握してから、記事内の手順へ進みましょう。

要素の選択: document.querySelector(“.mouse”)を使って、.mouse クラスを持つ最初の要素を選択し、これをmouse変数に格納します。 デバッグ情報の出力: console.log(mouse)を使って、選択した要素をコンソールに出力します。これにより、開発者はスクリプトが正しく要素を取得できているかを確認できます。 イベントリスナーの設定: window.onmousemoveに関数を割り当てることで、マウスが動いたときにその関数が呼び出されるようにします。 マウスの追跡とテンプレートリテラル: イベントリスナー内の関数では、マウスの座標に基づいて要素を画面上で動かすための計算を行います。 テンプレートリテラルはバッククォート(`)を使用し、${expression}の形式で変数や式の値を文字列中に埋め込むことを可能にします。 このコードでは、translate(${x}px,${y}px)の形でテンプレートリテラルを使い、xとy変数の値をCSSのtransformプロパティの値に動的に埋め込んでいます。これにより、mouse要素がマウスカーソルの位置に合わせて移動します。 アニメーションの適用: mouse.animate()関数を用いて、計算した位置に要素をアニメーションします。 mouseMoveStyleオブジェクトはCSSのtransformプロパティを使用し、要素を新しい位置に動かすためのスタイルを定義します。 animate()関数の第二引数はアニメーションのオプションを指定します。この場合、アニメーションの継続時間は1000ミリ秒(1秒)、そしてアニメーション終了後も要素を最終状態に保つためにfill: “forwards”が指定されています。 このコードにより、ユーザーがマウスを動かすたびに、.mouse クラスを持つHTML要素がスムーズにカーソルの動きに追従するアニメーションをするようになります。

コードの解説で押さえたいポイント

コードの解説は、コードや設定だけを切り離して覚えるより、何を変えるための処理なのかを確認してから試すと理解しやすくなります。変更前の状態を控え、作業を一つずつ反映すると、問題が起きた場所も特定しやすくなります。

コードの解説の確認方法

ブラウザーのコンソールにエラーがないかを確認し、クリックやスクロールを繰り返してもイベントが重複しないかを試します。スマートフォン幅とキーボード操作も確認してください。

まとめ

  • `.mouse` クラスを持つ要素は、マウスの動きに追従して画面上を動く。
  • テンプレートリテラルを使用し、マウスの現在位置に要素を配置する。
  • マウスのX座標とY座標を取得し、要素の幅と高さの半分を使用して中心をカーソルに合わせる。
  • ウィンドウの`onmousemove`イベントを使用して、マウスの動きに反応させる。
  • コンソールにマウス位置のログを出力し、デバッグに役立てる。
  • カーソルの動きをスムーズに追跡するために`animate`関数を利用する。
  • アニメーションの`duration`と`fill`オプションを設定して、動きをカスタマイズする。
  • このインタラクティブな動きは、ユーザー体験を向上させるために利用できる。

MEMBER COMMENTS

コメント(0件)

会員ログイン後にコメントできます

記事への質問や感想をコメントで共有できます。無料会員登録後もこの記事へ戻れます。