カーソルの位置を取得する

JavaScriptでカーソルの位置を取得する方法をメモ。

サンプルコード

カーソルの位置を取得する方法として、screenX/screenY・pageX/pageY・clientX/clientY・offsetX/offsetY があります。
mousemoveイベントでそれぞれの値を取得してみます。

HTML

<div class="control">
	<div>
	screenX: <span id="screenX"></span>
	screenY: <span id="screenY"></span>
	</div>
	<div>
	pageX: <span id="pageX"></span>
	pageY: <span id="pageY"></span>
	</div>
	<div>
	clientX: <span id="clientX"></span>
	clientY: <span id="clientY"></span>
	</div>
	<div>
	offsetX: <span id="offsetX"></span>
	offsetY: <span id="offsetY"></span>
	</div>
</div>

JavaScript

$(function() {
	$(window).on('mousemove', function(e) {
		$('#screenX').text(e.screenX);
		$('#screenY').text(e.screenY);

		$('#pageX').text(e.pageX);
		$('#pageY').text(e.pageY);

		$('#clientX').text(e.clientX);
		$('#clientY').text(e.clientY);

		$('#offsetX').text(e.offsetX);
		$('#offsetY').text(e.offsetY);
	});
});

カーソルの位置を取得するデモページ
それぞれで取得できる内容は以下の通りです。

screenX/screenY スクリーン(モニター)上の座標を取得。
pageX/pageY 表示しているページの左上からの座標を取得。
clientX/clientY 現在ブラウザで表示している領域の左上からの座標を取得。
offsetX/offsetY 要素内の座標を取得。

pageX/pageYとclientX/clientYの違いが少しわかりにくいですが、デモページを下にスクロールすると、pageYとclientYの値が異なるのが分かるかと思います。
offsetX/offsetYの対象は要素になるので、このデモの場合はpageX/pageYと同じ結果になります。

先ほどのデモではwindowを対象にしましたが、次は特定の要素を対象にしてみます。

HTML

<div class="box"></div>

JavaScript

$(function() {
	$('.box').on('mousemove', function(e) {
		$('#screenX').text(e.screenX);
		$('#screenY').text(e.screenY);

		$('#pageX').text(e.pageX);
		$('#pageY').text(e.pageY);

		$('#clientX').text(e.clientX);
		$('#clientY').text(e.clientY);

		$('#offsetX').text(e.offsetX);
		$('#offsetY').text(e.offsetY);
	});
});

offsetX/offsetYが.boxの左上からの座標になっているのが確認できました。
カーソルの位置を取得するデモページ2
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年4月
 123456
78910111213
14151617181920
21222324252627
282930