screenX
/Y
とclientX
/Y
とpageX
/の違いは何ですかY
?
また、iPad Safari の場合、計算はデスクトップと同様ですか? それともビューポートが原因で違いがありますか?
例を挙げていただければ幸いです。
ベストアンサー1
pageY
とclientY
との違いを説明する図を以下に示しますscreenY
。
pageX
およびclientX
およびについてもそれぞれ同様ですscreenX
。
pageX/Y
座標は、レンダリングされたページ全体の左上隅(スクロールによって隠れた部分を含む)を基準とします。
一方、clientX/Y
座標はブラウザ ウィンドウを通して「見える」ページの表示部分の左上隅を基準とします。
screenX/Y
物理的な画面を基準とします。
デモを見る
または、次のスニペットを試してください:
document.addEventListener('DOMContentLoaded', _ => {
const info = document.getElementById('info');
const updateInfo = event => {
const { clientX, clientY, pageX, pageY } = event;
info.innerHTML = `clientX: ${clientX} clientY: ${clientY}<br /> pageX: ${pageX} pageY: ${pageY}`;
};
document.addEventListener('mouseover', updateInfo);
document.addEventListener('mousemove', updateInfo);
});
body {
border: 1px solid red;
min-height: 10000px;
margin: 10px;
}
#info {
border: 1px solid blue;
position: fixed;
top: 80px;
left: 40px;
}
<h3>Move the mouse around and scroll to see the values of clientX/Y and pageX/Y</h3>
<div id="info"></div>
注: おそらく必要ないでしょうscreenX/Y