親要素に対するマウスの位置を取得する方法はありますか?
私が構造を持っているとしましょう:
<div id="parent">
<span class="dot"></span>
</div>
マウスをspan
要素の上に置くとき、親要素(<div id="parent">
)に対する相対的な位置を取得する必要があります。PageX / ClientXは、ページ/クライアント領域に対する相対的な位置を教えてくれるので、うまくいきません。
親要素に対するマウスの位置を取得する方法はありますか?
私が構造を持っているとしましょう:
<div id="parent">
<span class="dot"></span>
</div>
マウスをspan
要素の上に置くとき、親要素(<div id="parent">
)に対する相対的な位置を取得する必要があります。PageX / ClientXは、ページ/クライアント領域に対する相対的な位置を教えてくれるので、うまくいきません。
getBoundingClientRect()
イベント内のマウス位置から取得できる親要素のビューポート相対位置を減算し、相対位置を取得しclientX
ますclientY
。
例えば:
element.addEventListener("mousedown", function (e) {
let bounds = parent.getBoundingClientRect();
let x = e.clientX - bounds.left;
let y = e.clientY - bounds.top;
console.log(x, y);
});
element
イベントを受信する内部要素はどこにありparent
、座標の必要な参照です。
jquery offset()メソッドは親の配置を処理するため、
function onsomemouseevent(e) {
var x = e.pageX - $(e.target).offset().left;
}
プレーンブラウザで抽象化されたjqueryです。
offsetParent
プロパティを試してください。
これを試して:
positionX = document.getElementByID('childId').offsetParent.offsetLeft;
positionY = document.getElementByID('childId').offsetParent.offsetLeft;