JavaScript. Как сделать что бы Event PageX и PageY отсчитывался в пределах блока?

268
20 марта 2017, 09:54

Всем привет. Допустим есть блок <div id="block"></div>. Как сделать что бы положение курсора начинало свой отчет только внутри блока, и только в его пределах. То есть когда курсор находится в левом верхнем углу этого блока, результат был X:1, Y:1.

Answer 1

Нужно вычитать из положения курсора положение элемента. Положение элемента узнаём функцией getBoundingClientRect():

var block = document.querySelector('#block'); 
 
block.onmousemove = function(event) { 
  var mpos_left = event.pageX, 
      mpos_top = event.pageY 
       
  var mpos_block_left = mpos_left - this.getBoundingClientRect().left, 
      mpos_block_top = mpos_top - this.getBoundingClientRect().top; 
       
  this.innerHTML = 'Left: '+mpos_block_left+'; Top: '+mpos_block_top; 
};
#block { 
  width: 200px; 
  height: 200px; 
  margin: 20px; 
  border: 2px solid #000; 
}
<div id="block"></div>

READ ALSO
Проблема с компилированием Typescript

Проблема с компилированием Typescript

В общем работаю в PHPstorm компилю через tsconfigjson

277
Тестовое задание, с чего нужно начать?

Тестовое задание, с чего нужно начать?

Подскажите в общих чертах как это должно выглядеть на выходе:

276
yandex API map редактирование baloona в админской части

yandex API map редактирование baloona в админской части

На страничке а админской части имеется yandex карта с передвигаемым baloon-ом ,задачка в том как после перемещении baloona координаты передать ajax-ом...

236
Работа this при передачи функции в объект

Работа this при передачи функции в объект

Добрый день, возникла трудность в понимании передачи функции в объект, когда функция использует this

297