JavaScriptを使って、mouseoutイベントを設定する方法などについて説明します。
実際に動くサンプルを使いつつ、以下について書いています。
・mouseoutイベントをつける方法
・ページからマウスを外すと画像が表示されるサンプル
mouseoutイベントとは?
mouseout
イベントは、ユーザーのマウスが、イベントを設定した要素から離れたときに発生します。
このイベントを活用することで、要素からカーソルが外れた際に特定のUI変更や動作を実現できます。
mouseoutイベントをつける方法
mouseout
イベントをつける方法です。
属性値を設定するか、addEventListener
メソッドを使って設定できます。
DOMにmouseoutを使ってイベントをつける
HTMLのonmouseout
属性を使って、直接イベントを設定する方法です。
下記のコードでは、div
タグの要素内にマウスカーソルを合わせてから、カーソルが外れると色が変わるようにしてみました。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Mouseoutのテスト</title>
<style>
#box {
width: 200px;
height: 200px;
background-color: lightblue;
border: 1px solid black;
text-align: center;
line-height: 200px;
}
</style>
<script>
function changeColor() {
const box = document.querySelector('#box');
box.style.backgroundColor = 'lightgreen';
}
</script>
</head>
<body>
<div id="box" onmouseout="changeColor()">マウスを乗せてから外す!</div>
</body>
</html>
HTMLの解説
body
タグの中に、div
タグをひとつ用意して、マウスが外された時に色が変わるようにしています。
onmouseout
属性を指定していて、マウスが外されるとchangeColor
関数が実行されます。
JavaScriptの解説
changeColor
関数では、querySelector
メソッドを呼び出して、div
タグ取得するようにしています。
そして、取得したdiv
タグの背景色にlightgreen
を設定しました。
これで、マウスが外されると背景色がlightgreen
になります。
動作確認
実際に動作させると、下記のように要素からマウスを外したときだけ、div
要素の色が変わっていることが確認できました。
addEventListenerを使ってイベントをつける
addEventListener
メソッドを使うことでも、対象の要素にmouseout
イベントをつけることができます。
先ほどのコードを少し変えて、addEventListener
メソッドでイベントをつけてみました。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Mouseoutのテスト</title>
<style>
#box {
width: 200px;
height: 200px;
background-color: lightblue;
border: 1px solid black;
text-align: center;
line-height: 200px;
}
</style>
<script>
window.onload = () => {
const box = document.querySelector('#box');
box.addEventListener('mouseout', () => {
box.style.backgroundColor = 'lightgreen';
});
};
</script>
</head>
<body>
<div id="box">マウスを乗せてから外す!</div>
</body>
</html>
HTMLの解説
先ほどと同様にdiv
タグを用意しています。
JavaScriptからイベントを追加するため、onmouseout
属性を削除しています。
JavaScriptの解説
window.onload
を使用して、ページの読み込み時に処理されるようにしています。
最初にquerySelector
で、div
タグの要素を取得しました。
そのあとに取得した要素から、addEventListener
メソッドを使用してイベントをつけています。
第1引数にmouseout
を指定して、mouseout
イベントをつけています。
第2引数にイベントが実行された時の処理を、無名関数で書いています。
実際に動作させると、先ほどと同様に、要素からマウスを外すと背景が変わりました。
ページからマウスを外すと画像が表示されるサンプル
mouseout
を使って、ブラウザからマウスを外すと、画像が表示されるようなサンプルを作成しました。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Mouseoutで画像表示</title>
<script>
window.onload = () => {
document.addEventListener('mouseout', function (event) {
if (!event.relatedTarget) {
document.getElementById('image').style.display = 'block';
}
});
};
</script>
</head>
<body>
<div id="message">ブラウザからマウスを外してください</div>
<img id="image" src="image1.png" style="display: none; width: 300px;">
</body>
</html>
HTMLの解説
body
タグの配下に、タグを2つ配置しています。
1つめは単純にメッセージを表示しているdiv
タグです。
2つめが、最初に非表示にしておくimage
タグです。(display:none
で非表示にしています)
マウスがページから離れると、この画像が表示されます。
JavaScriptの解説
document
に対して、addEventListener
メソッドを使ってmouseout
イベントをつけています。
これで、ページ全体にmouseout
イベントが効きます。
ページのメッセージなど他の要素にのったときにも、mouseout
イベントが走るので
「!event.relatedTarget
」と判定して、要素にのっていないときに画像を表示するようにしました。
マウスがページから外れると、image
タグのdisplay
属性をblock
にして表示しています。
動作確認
実際に動作を確認すると、下記のようにページからマウスカーソルが出た時に画像が表示されるようになりました。
JavaScriptでmouseoutイベントを設定する方法まとめ
今回はJavaScriptのmouseoutイベントを設定する方法について書きました。
まとめると、下記のようになります。
・mouseoutイベントはonmouseoutとaddEventListenerで設定することができた。
コメント