Яка різниця між screenX
/ Y
, clientX
/ Y
та pageX
/ Y
?
Крім того, для iPad Safari чи є розрахунки подібними, як на робочому столі - А чи є якась різниця через вікно перегляду?
Було б чудово, якби ви могли вказати мені на приклад.
Яка різниця між screenX
/ Y
, clientX
/ Y
та pageX
/ Y
?
Крім того, для iPad Safari чи є розрахунки подібними, як на робочому столі - А чи є якась різниця через вікно перегляду?
Було б чудово, якби ви могли вказати мені на приклад.
Відповіді:
У JavaScript:
pageX
, pageY
, screenX
, screenY
, clientX
, І clientY
повертає число , яке вказує число фізичних «CSS пікселів» точка знаходиться від опорної точки. Точка події - це місце, де користувач натиснув, опорна точка - точка в лівій верхній частині. Ці властивості повертають горизонтальну та вертикальну відстань від цієї опорної точки.
pageX
і pageY
:
Що стосується верхнього лівого кута повністю виведеної області вмісту у веб-переглядачі. Ця опорна точка знаходиться під рядком URL та кнопкою повернення у верхній лівій частині. Ця точка може знаходитися в будь-якому місці вікна браузера і фактично може змінити місце розташування, якщо на сторінках вбудовані прокручувані сторінки, а користувач переміщує смугу прокрутки.
screenX
і screenY
:
Що стосується верхнього лівого екрану фізичного екрана / монітора, ця опорна точка переміщується лише у випадку збільшення або зменшення кількості моніторів або роздільної здатності монітора.
clientX
і clientY
:
Відносно верхнього лівого краю області вмісту ( вікна перегляду ) вікна браузера. Ця точка не рухається, навіть якщо користувач переміщує смугу прокрутки зсередини браузера.
Для наочності, на якому браузери підтримуються які властивості:
http://www.quirksmode.org/dom/w3c_cssom.html#t03
w3schools має онлайн-перекладач та редактор Javascript, щоб ви могли бачити, що кожен робить
http://www.w3schools.com/jsref/tryit.asp?filename=try_dom_event_clientxy
<!DOCTYPE html>
<html>
<head>
<script>
function show_coords(event)
{
var x=event.clientX;
var y=event.clientY;
alert("X coords: " + x + ", Y coords: " + y);
}
</script>
</head>
<body>
<p onmousedown="show_coords(event)">Click this paragraph,
and an alert box will alert the x and y coordinates
of the mouse pointer.</p>
</body>
</html>
Ось малюнок, що пояснює різницю між pageY
та clientY
.
Те саме для pageX
і clientX
, відповідно.
pageX/Y
координати відносяться до верхнього лівого кута всієї відображеної сторінки (включаючи частини, приховані прокруткою),
при цьому clientX/Y
координати відносяться до верхнього лівого кута видимої частини сторінки, "видно" через вікно браузера.
Вам, мабуть, ніколи не знадобиться screenX/Y
screenX/Y
таке?
pageX/pageY
слід використовувати замість clientX/clientY
?
<html>
елемента в CSS-пікселях.viewport
пікселів CSS.screen
пікселів пристрою.Щодо вашого останнього запитання, чи обчислення схожі на браузерах настільних та мобільних пристроїв ... Для кращого розуміння - у мобільних браузерах - нам потрібно розмежувати дві нові концепції: вікно перегляду макета та візуальний вікно перегляду . Візуальний огляд - це частина сторінки, яка наразі відображається на екрані. Окно перегляду макетів є синонімом повної сторінки, відображеної у веб-переглядачі (з усіма елементами, які не відображаються у поточному вікні перегляду).
У веб-переглядачах мобільних пристроїв pageX
та pageY
, як і раніше, відносяться до сторінки в CSS-пікселях, щоб ви могли отримати координати миші відносно сторінки документа. З іншого боку , clientX
і clientY
визначити координати миші щодо візуального видового екрану .
Тут є ще одна нитка stackoverflow щодо відмінностей між візуальним вікном перегляду та вікном макета: Різниця між візуальним вікном перегляду та вікном перегляду макета?
Ще один хороший ресурс: http://www.quirksmode.org/mobile/viewports2.html
Що мені допомогло - додати подію безпосередньо на цю сторінку і натиснути навколо себе! Відкрийте консоль в інструментах для розробників / Firebug тощо та вставте це:
document.addEventListener('click', function(e) {
console.log(
'page: ' + e.pageX + ',' + e.pageY,
'client: ' + e.clientX + ',' + e.clientY,
'screen: ' + e.screenX + ',' + e.screenY)
}, false);
Click anywhere
За допомогою цього фрагмента ви можете відстежувати позицію клацання під час прокрутки, переміщення вікна браузера тощо.
Зауважте, що pageX / Y та clientX / Y однакові, коли ви прокручуєтесь до вершини!
Різниця між ними значною мірою залежатиме від того, на який браузер ви зараз звертаєтесь. Кожен реалізує ці властивості по-різному, або зовсім не є. Quirksmode має чудову документацію щодо відмінностей браузера щодо стандартів W3C, таких як DOM та JavaScript Events.