Вы, вероятно, ищете clientX
и clientY
, а не pageX
и pageY
.Кроме того, обратите внимание, что вы должны поставить position: absolute
на модал, который вы пытаетесь разместить, чтобы он работал так, как вы ожидаете (и если вы не слишком знакомы с позиционированием, вам обязательно стоит прочитать об этом - этоне так просто, как кажется).
pageX
и pageY
:
Относительно верхнего левого углаполностью отображаемая область содержимого в браузере [...] Эта точка может находиться в любом месте окна браузера и может фактически изменять местоположение, если в страницы встроены прокручиваемые страницы, встроенные в страницы, и пользователь перемещает полосу прокрутки.
screenX
и screenY
:
Относительно верхнего левого угла физического экрана / монитора.
clientX
и clientY
:
Относительно верхнего левого края области содержимого ( область просмотра ) окна браузера.Эта точка не перемещается, даже если пользователь перемещает полосу прокрутки из браузера.
Подробнее:
Вот рабочий пример:
document.addEventListener("click", e => {
console.log(e.clientX, e.clientY);
let modal = document.getElementById("modal");
modal.style.top = e.clientY+"px";
modal.style.left = e.clientX+"px";
});
#modal {
position: absolute;
width: 100px;
height: 200px;
background: blue;
}
<div id="modal"></div>