Dodaj przesunięcie zdarzenia do przesunięcia elementu macierzystego, aby uzyskać absolutną pozycję przesunięcia zdarzenia.
Przykład:
HTMLElement.addEventListener('mousedown',function(e){
var offsetX = e.offsetX;
var offsetY = e.offsetY;
if(e.target != this){ // 'this' is our HTMLElement
offsetX = e.target.offsetLeft + e.offsetX;
offsetY = e.target.offsetTop + e.offsetY;
}
}
Kiedy cel zdarzenie nie jest elementem którym zdarzenie zostało zarejestrowane na, dodaje przesunięcie rodzica do bieżącego przypadku przesunięcia w celu obliczenia „absolutna” offset wartość.
Według Mozilla Web API: „The HTMLElement.offsetLeft tylko do odczytu Właściwość zwraca liczbę pikseli, że lewy górny róg bieżącym elementem jest przesunięcie w lewo w obrębie węzła HTMLElement.offsetParent”.
Dzieje się tak najczęściej, gdy zarejestrowałeś zdarzenie na rodzicu, który zawiera więcej dzieci, na przykład: przycisk z wewnętrzną ikoną lub rozpiętością tekstową, element li
z wewnętrznymi przęsłami. itp...
elementem jest umieszczony 'static' nie są kompensowane rodziców. – Esailija
prawo; mój błąd – jackwanders
nie używaj średników wewnątrz nawiasów klamrowych, użyj przecinka –