Was ist der Unterschied zwischen screenX
/ Y
, clientX
/ Y
und pageX
/Y
?
Sind die Berechnungen auch für iPad Safari ähnlich wie auf dem Desktop - oder gibt es aufgrund des Ansichtsfensters einen Unterschied?
Es wäre großartig, wenn Sie mir ein Beispiel geben könnten.
javascript
ipad
safari
mouse-position
hmthr
quelle
quelle
Antworten:
In JavaScript:
pageX
,pageY
,screenX
,screenY
,clientX
, UndclientY
liefert eine Zahl , die die Anzahl der physischen „CSS Pixel“ ein Punkt anzeigt , von dem Referenzpunkt. Der Ereignispunkt ist der Punkt, auf den der Benutzer geklickt hat. Der Referenzpunkt ist ein Punkt oben links. Diese Eigenschaften geben den horizontalen und vertikalen Abstand von diesem Referenzpunkt zurück.pageX
undpageY
:Relativ oben links im vollständig gerenderten Inhaltsbereich im Browser. Dieser Referenzpunkt befindet sich unterhalb der URL-Leiste und der Zurück-Schaltfläche oben links. Dieser Punkt kann sich an einer beliebigen Stelle im Browserfenster befinden und die Position tatsächlich ändern, wenn in Seiten eingebettete scrollbare Seiten eingebettet sind und der Benutzer eine Bildlaufleiste verschiebt.
screenX
undscreenY
: InBezug auf die obere linke Ecke des physischen Bildschirms / Monitors bewegt sich dieser Referenzpunkt nur, wenn Sie die Anzahl der Monitore oder die Monitorauflösung erhöhen oder verringern.
clientX
undclientY
:Relativ zum oberen linken Rand des Inhaltsbereichs ( des Ansichtsfensters ) des Browserfensters. Dieser Punkt wird nicht verschoben, selbst wenn der Benutzer eine Bildlaufleiste aus dem Browser heraus bewegt.
Für eine visuelle Darstellung, welche Browser welche Eigenschaften unterstützen:
http://www.quirksmode.org/dom/w3c_cssom.html#t03
w3schools verfügt über einen Online-Javascript-Interpreter und -Editor, sodass Sie sehen können, was jeder tut
http://www.w3schools.com/jsref/tryit.asp?filename=try_dom_event_clientxy
quelle
Hier ist ein Bild, das den Unterschied zwischen
pageY
und erklärtclientY
.Das Gleiche gilt für
pageX
undclientX
sind.pageX/Y
Die Koordinaten beziehen sich auf die obere linke Ecke der gesamten gerenderten Seite (einschließlich der durch Scrollen ausgeblendeten Teile).während
clientX/Y
Koordinaten relativ zur oberen linken Ecke des sichtbaren Teils der Seite sind, werden sie über das Browserfenster "gesehen".Siehe Demo
Du wirst es wahrscheinlich nie brauchen
screenX/Y
quelle
screenX/Y
du dir vorstellen, was ist?pageX/pageY
sollte also anstelle vonclientX/clientY
?<html>
Element in CSS-Pixeln an.viewport
in CSS-Pixeln an.screen
In-Device-Pixeln an.In Bezug auf Ihre letzte Frage, ob die Berechnungen in Desktop- und mobilen Browsern ähnlich sind ... Zum besseren Verständnis - in mobilen Browsern - müssen wir zwei neue Konzepte unterscheiden: das Layout-Ansichtsfenster und das visuelle Ansichtsfenster . Das visuelle Ansichtsfenster ist der Teil der Seite, der derzeit auf dem Bildschirm angezeigt wird. Das Layout-Ansichtsfenster ist ein Synonym für eine vollständige Seite, die in einem Desktop-Browser gerendert wird (mit allen Elementen, die im aktuellen Ansichtsfenster nicht sichtbar sind).
In mobilen Browsern sind die
pageX
undpageY
immer noch relativ zur Seite in CSS-Pixeln, sodass Sie die Mauskoordinaten relativ zur Dokumentseite erhalten können. Auf der anderen SeiteclientX
undclientY
definieren Sie die Mauskoordinaten in Bezug auf das visuelle Ansichtsfenster .Es gibt hier einen weiteren Stackoverflow-Thread zu den Unterschieden zwischen dem visuellen Ansichtsfenster und dem Layout-Ansichtsfenster: Unterschied zwischen dem visuellen Ansichtsfenster und dem Layout-Ansichtsfenster?
Eine weitere gute Ressource: http://www.quirksmode.org/mobile/viewports2.html
quelle
Was mir geholfen hat, war, ein Ereignis direkt zu dieser Seite hinzuzufügen und für mich selbst zu klicken! Öffnen Sie Ihre Konsole in den Entwicklertools / Firebug usw. und fügen Sie Folgendes ein:
Mit diesem Snippet können Sie Ihre Klickposition verfolgen, während Sie scrollen, das Browserfenster verschieben usw.
Beachten Sie, dass pageX / Y und clientX / Y identisch sind, wenn Sie ganz nach oben gescrollt haben!
quelle
Der Unterschied zwischen diesen hängt weitgehend davon ab, auf welchen Browser Sie sich gerade beziehen. Jeder implementiert diese Eigenschaften anders oder gar nicht. Quirksmode bietet eine hervorragende Dokumentation zu Browserunterschieden in Bezug auf W3C-Standards wie DOM- und JavaScript-Ereignisse.
quelle