Wie kann ich die Maus-Koordinaten relativ zu einem übergeordneten div? Javascript
Moment habe ich ein div angelegt, mit anderen Elementen innerhalb der it.
Etwas ähnliches wie unten;
<div id="container" style="position: relative; width: 500px; height: 500px;">
<div style="position: absolute; left: 50px; top: 50px;"></div>
<div style="position: absolute; left: 100px; top: 100px;"></div>
</div>
Ich versuche, die Maus-position relativ zu dem div mit der id container
.
Bisher habe ich diese;
function onMousemove(event) {
x = event.offsetX;
y = event.offsetY;
};
var elem = document.getElementById("container");
elem.addEventListener("mousemove", onMousemove, false);
Dies funktioniert gut, wenn das div-Element mit der id container
hat keine Kinder. Wenn die container
div Kinder hat, bekommt es die Maus-Koordinaten relativ zum Kind eher als die Eltern.
Was ich durch dieses bedeute, ist, wenn die Maus an einer position von x: 51, y: 51
relativ zum übergeordneten div, wäre es tatsächlich zurück x: 1, y: 1
relativ zum child-div, mit der html-oben angegeben.
Wie kann ich erreichen, was ich will, keine Bibliotheken bitte.
BEARBEITEN
tymeJV hat freundlichst ein jsfiddle, was geschehen ist oben.
- Ich habe verspottet ein Turnschuh bis: jsfiddle.net/N6PJu/1 - Ist dieser zu sehen, Ihre Fehler richtig?
- Ja, dass ist das, was passiert ist, ich danke Ihnen für das 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im wesentlichen: 'mouseposition' - 'parent-element position' = 'mouseposition relativ zum übergeordneten element'
So, hier habe ich geändert, die Funktion:
Hier ist ein funktionsfähige demo-fiddle. Wie Sie Lesen können in den code, dieser sieht auch im Dokument ist die scroll-position.
PPK ' s Artikel 'Ereignis-Eigenschaften' und 'finden position' sind (wie immer) gut zu Lesen!
Hoffe, das hilft!
Update:
Ich fand tatsächlich einen Fehler in der ppk-code (wie selten ist das denn?!): Ich korrigierte die fehlerhafte
var
in:if (!e) var e = window.event;
zuif (!e){e = window.event;}
Akzeptiert die Antwort nicht für mich in Chrom. Hier ist, wie ich es gelöst:
event.target
fürdocument.getElementById("container")
.Holen Sie sich die screenX und screenY Eigenschaften, um zu sehen, wo der Mauszeiger auf dem Bildschirm (und möglicherweise nehmen die scrollHeight berücksichtigt!).
Dann erhalten Sie die Links und oben auf dem container-element, und berechnen Sie den offset zwischen Ihnen: das ist die position der Maus in das element.
Sehen https://developer.mozilla.org/en-US/docs/DOM/MouseEvent für mehr details.
Html
Javascript