マウスオーバーの使い方は?

mouseover()の使い方

mouseover()の使い方

Webサイトに動きを加えるJavaScriptは、ユーザー体験を向上させるための強力なツールです。その中でも、mouseover()は、ユーザーのカーソルが特定の要素上を通過した際にアクションを実行できる、シンプルながらも応用範囲の広いメソッドです。この記事では、mouseover()の基本的な使い方から、引数を使った応用例、そして注意点まで、具体例を交えて詳しく解説していきます。

mouseover()の基本

mouseover()は、対象となるHTML要素に対して実行することで、ユーザーのカーソルがその要素に入ったタイミングを検知し、指定した処理を実行できるようにします。基本的な構文は以下の通りです。


<要素>.addEventListener('mouseover', function() {
  // カーソルが要素上に入った時に実行したい処理
});

例えば、以下のコードでは、IDが"box"の要素にカーソルが乗ると、要素の背景色が赤色に変化します。


<style>
#box {
  width: 100px;
  height: 100px;
  background-color: lightblue;
}
</style>

<div id="box"></div>

<script>
  const box = document.getElementById("box");
  box.addEventListener('mouseover', function() {
    this.style.backgroundColor = 'red';
  });
</script>

引数を使った応用例

mouseover()では、引数に関数を指定することで、より複雑な処理を実行できます。この関数には、イベントが発生した要素に関する情報を持つイベントオブジェクトが渡されます。イベントオブジェクトを利用することで、例えば、カーソルが要素のどの位置にあるのかを取得するなど、より動的な表現が可能になります。

以下は、引数を使ったmouseover()の例です。この例では、カーソルが画像上を通過する際に、カーソルの位置に応じて画像の拡大率が変化します。


<img src="sample.jpg" id="image" width="300">

<script>
  const image = document.getElementById("image");

  image.addEventListener('mouseover', function(event) {
    const x = event.offsetX;
    const y = event.offsetY;
    const scale = 1 + (x + y) / 500;
    this.style.transform = `scale(${scale})`;
  });

  image.addEventListener('mouseout', function() {
    this.style.transform = 'scale(1)';
  });
</script>

mouseover()使用時の注意点

mouseover()は便利なメソッドですが、使用時には以下の点に注意が必要です。

項目 説明
パフォーマンスへの影響 mouseover()イベントは、カーソルが要素上を通過する度に発生するため、処理内容によってはパフォーマンスに影響を与える可能性があります。特に、複雑な処理や大量の要素に対して適用する場合は注意が必要です。
アクセシビリティ mouseover()に依存した機能は、キーボードのみで操作するユーザーや、マウス操作に不慣れなユーザーにとって、利用しづらい場合があります。重要な機能は、mouseover()以外の方法でもアクセスできるように配慮する必要があります。
mouseout()との組み合わせ mouseover()で適用した効果を元に戻したい場合は、mouseout()イベントと組み合わせて使用します。

参考資料

よくある質問

Q1. mouseover()とmouseenter()の違いは何ですか?

A1. mouseover()は、子要素から親要素へカーソルが移動した場合もイベントが発生しますが、mouseenter()は親要素に入った時のみイベントが発生します。子要素を持つ要素にイベントリスナーを設定する場合は、どちらのイベントを使用するかによって挙動が変わるため注意が必要です。

Q2. タッチデバイスではmouseover()は使えますか?

A2. タッチデバイスでは、マウスカーソルが存在しないため、mouseover()イベントは発生しません。タッチデバイスに対応する場合は、touchstartなどのタッチイベントを使用する必要があります。

Q3. mouseover()で要素の表示・非表示を切り替えたい場合は?

A3. 要素の表示・非表示の切り替えには、mouseover()とmouseout()を組み合わせて使用します。mouseover()で要素を表示し、mouseout()で要素を非表示にすることで、カーソルが要素上にある時だけ表示されるようにすることができます。

その他の参考記事:jquery hover アニメーション