JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptのmouseenterイベントで、マウスが要素に乗ったときに要素を表示する方法

アクションバーやメニューなど、普段は見えない要素があり、ユーザーのマウスがその領域に入ったときだけ表示したい——そんなケースはよくあります。これを実現するには、JavaScriptのmouseenterイベントを使うのが簡単です。

JavaScriptのmouseenterイベントで、マウスが要素に乗ったときに要素を表示する方法

実装手順

HTMLのマークアップ

お好みのエディタに以下のHTMLコードを追加してください(オンラインで試すならCodePenがおすすめです)。

<div class="invisible-box">Yay you can see me!</div>

CSSスタイリング

スタイルシートに以下のCSSを追加します。

.invisible-box {
  opacity: 0;
  transition: all 500ms;
  padding: 32px;
  margin-top: 32px;
  margin-bottom: 32px;
  background-color: #cf4b32;
  color: #fff;
  text-align: center;
}

.opacity-1 {
  opacity: 1;
}

.invisible-boxクラスにはopacity: 0;が指定されているため、デフォルトでは要素が非表示になっています。その下にある.opacity-1はユーティリティクラスで、JavaScriptからこのクラスを付与することで要素を再び表示できるようにしています。

JavaScriptのmouseenterイベント

JSスクリプトに以下のコードを追加します。

let invisibleBox = document.querySelector(".invisible-box")

function addFullOpacity() {
  invisibleBox.classList.add("opacity-1")
}

invisibleBox.addEventListener("mouseenter", addFullOpacity)

コードの仕組み

  • まずquerySelector()を使って.invisible-boxを取得し、わかりやすい名前の変数invisibleBoxに代入します。
  • 次に関数宣言によってaddFullOpacity()という名前の関数を定義します。関数本体の{..}の中にはステートメント(文)を記述します。
  • このステートメントでは、classListプロパティのadd()メソッドを使い、非表示のボックス要素にopacity-1クラスを追加します。
  • 最後にaddEventListener()を呼び出し、2つの引数を渡します。第1引数はmouseenterイベントを監視するためのもので、第2引数はイベントが検知されたときに呼び出されるaddFullOpacity()関数です。

mouseenterとmouseoverの違いは?

似たイベントタイプとしてmouseoverが存在することに気づいた方もいるでしょう。では、mouseenterとはどこが違うのでしょうか?

主な違いは以下のとおりです。

  • mouseoverイベントは、マウスが親要素やその子要素の上を移動するたびに発火します。要素間を行き来するたびに繰り返し発火するため、パフォーマンス面でコストが高くなる可能性があります。
  • mouseenterイベントは、マウスが対象の親要素に入ったときにのみ発火します。子要素の出入りは考慮されません。

複数の機能を含むWebコンポーネントで、それぞれの子要素ごとに異なる挙動を持たせたい場合はmouseoverが適しています。それ以外のケースでは、パフォーマンスに優れたmouseenterを使うのがおすすめです。

参考リソース

  • 全コードを掲載したCodePenサンプル
  • MDN Web Docs: mouseenter

  1. JavaScriptで要素のマージンを設定する方法をわかりやすく解説

    JavaScriptで要素のマージンを設定するには、marginプロパティを使用します。このプロパティを使うと、要素の外側の余白(マージン)を上下左右の4辺まとめて指定することができます。marginプロパティの基本的な使い方JavaScriptでは、element.style.marginに値を代入することでマージンを設定できます。値は「上・右・下・左」の順に半角スペースで区切って指定するのが基本です。サンプルコード以下の例では、ボタンをクリックすると段落要素の4辺すべてにマージンが設定されます。実際にコードをコピーしてブラウザで実行し、動作を確認してみてください。<!DOCTYPE

  2. JavaScriptで要素が非表示になっているかどうかを確認する方法

    Webページの開発では、特定の要素が現在非表示になっているかどうか(display: none が適用されているか)を判定したい場面がよくあります。JavaScriptでこれを実現するには、window.getComputedStyle() メソッドを使うのが一般的です。このメソッドは、CSSスタイルシートで設定された実際の表示状態を取得できるため、確実に非表示状態をチェックできます。 実装例 以下は、ボタンをクリックすると非表示になっているDIV要素を表示するサンプルコードです。クリック時には、まず getComputedStyle() で要素が「none」になっているかどうかを確認してから