Добавьте смещение события к смещению родительского элемента, чтобы получить абсолютную позицию смещения события.
Пример :
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;
}
}
Когда целью события не является элемент, для которого событие было зарегистрировано, он добавляет смещение родительского элемента к текущему смещению события, чтобы вычислить «абсолютное» значение смещения.
Согласно веб-API Mozilla: «Свойство HTMLElement.offsetLeft, доступное только для чтения, возвращает количество пикселей, на которое верхний левый угол текущего элемента смещен влево внутри узла HTMLElement.offsetParent ».
В основном это происходит, когда вы регистрируете событие для родителя, который содержит еще несколько дочерних li
элементов , например: кнопку с внутренним значком или текстовым диапазоном, элемент с внутренними промежутками. и т.д...