В чем разница между pageX/Y, clientX/Y, screenX/Y в Javascript?

211
16 апреля 2017, 01:50

Примеры с некоторыми визуальными оформлением будут очень полезны.

Примечание переводчика:

Этот топик был отмечен на enSO как дубликат вопроса:
What is the difference between screenX/Y, clientX/Y and pageX/Y?

Действительно заголовок почти на 100% совпадает, но содержание ответов намного уступает, на мой взгляд, переведенным ответам с enSO в этом топике.
Они более развернутые, с хорошими графическими иллюстрациями, с интерактивными примерами.
Поэтому и был выбран именно этот топик для перевода. И у нас на ruSO подобные вопросы задавались не раз, что говорит об интересе к данной проблеме.

Перевод вопроса: What is the difference between pageX/Y clientX/Y screenX/Y in Javascript? @Inquisitive

Answer 1

Визуальные подсказки представляют:

Screen → Полный экран монитора (screenX/Y)
Позиция всегда будет относительна к окну просмотра физического экрана.

Client → Клиент viewport браузера (clientX/Y)
Если вы кликнете в левом верхнем углу,то значение всегда будет(0,0) независимо от `scroll position`.

Document → Полный документ / страница (pageX/Y)
Учтите, что pageX/pageY событие UIEvent object are not standardized.

Все значения в пикселях.

Перевод ответа: What is the difference between pageX/Y clientX/Y screenX/Y in Javascript? @K3N

Answer 2

Итерактивный пример

jsBin DEMO

CLIENT → The Browser window

clientX и clientY = значения (px) положения мыши относительно границ viewport экрана браузера

Tip:
Даже, если вы прокручиваете документ, значения будут всегда одинаковые

PAGE → Весь документ

pageX, pageY = значениям в (px), положения курсора мыши, относительно левого, верхнего угла документа.

Tip:
Если вы прокручиваете документ, например вертикально pageY значение изменяется, потому что это новая верхняя позиция курсора мыши внутри вашего элемента.
Также стоит отметить, что:
event.pageY - event.clientY === document.documentElement.scrollTop
( или jQuery's $("html, body").scrollTop() )

SCREEN → Ваш экран

screenX и screenY являются значениями (px) текущей позиции курсора мыши относительно физического дисплея.

Перевод ответа: What is the difference between pageX/Y clientX/Y screenX/Y in Javascript? @Roko C. Buljan

READ ALSO
NodeJS FTP - ошибка при отключении интернета

NodeJS FTP - ошибка при отключении интернета

Есть ли возможность в модуле ftp(nodejs) отловить ошибку при загрузке файла, например, при отключении интернета или когда сервер ftp выключился...

195
(1,5-1)*2 = 8 JavaScript

(1,5-1)*2 = 8 JavaScript

Здравствуйте, есть выражение, (1,5-1)*2 на js оно будет равно 8, это происходит, потому что стоит запятая, а не точка, Объясните пожалуйста, почему...

553
утечка памяти при удалении элемента DOM

утечка памяти при удалении элемента DOM

ЗдравствуйтеЕсть приложение, которое должно работать длительное время, все это время в нем удаляются/создаются элементы таблицы(элементы...

224