Qual é a diferença entre screenX
/ Y
, clientX
/ Y
e pageX
/ Y
?
Também para o iPad Safari, os cálculos são semelhantes aos da área de trabalho - OU há alguma diferença devido à janela de visualização?
Seria ótimo se você pudesse me indicar um exemplo.
javascript
ipad
safari
mouse-position
hmthr
fonte
fonte
Respostas:
Em JavaScript:
pageX
,pageY
,screenX
,screenY
,clientX
, EclientY
retorna um número que indica o número de “pixels CSS físicas” é um ponto a partir do ponto de referência. O ponto do evento é onde o usuário clicou, o ponto de referência é um ponto no canto superior esquerdo. Essas propriedades retornam a distância horizontal e vertical desse ponto de referência.pageX
epageY
:relativo à parte superior esquerda da área de conteúdo totalmente renderizada no navegador. Este ponto de referência está abaixo da barra de URL e do botão Voltar no canto superior esquerdo. Esse ponto pode estar em qualquer lugar na janela do navegador e pode realmente alterar o local se houver páginas roláveis incorporadas dentro das páginas e o usuário mover uma barra de rolagem.
screenX
escreenY
: Emrelação à parte superior esquerda da tela / monitor físico, esse ponto de referência se move apenas se você aumentar ou diminuir o número de monitores ou a resolução do monitor.
clientX
eclientY
:Relativo à borda superior esquerda da área de conteúdo ( a janela de exibição ) da janela do navegador. Este ponto não se move, mesmo que o usuário mova uma barra de rolagem do navegador.
Para um visual em quais navegadores suportam quais propriedades:
http://www.quirksmode.org/dom/w3c_cssom.html#t03
O w3schools possui um interpretador e editor Javascript on-line para que você possa ver o que cada um faz
http://www.w3schools.com/jsref/tryit.asp?filename=try_dom_event_clientxy
fonte
Aqui está uma imagem explicando a diferença entre
pageY
eclientY
.O mesmo para
pageX
eclientX
, respectivamente.pageX/Y
as coordenadas são relativas ao canto superior esquerdo de toda a página renderizada (incluindo partes ocultas pela rolagem),enquanto as
clientX/Y
coordenadas são relativas ao canto superior esquerdo da parte visível da página, "vistas" pela janela do navegador.Ver demonstração
Você provavelmente nunca precisará
screenX/Y
fonte
screenX/Y
é?pageX/pageY
deve ser usado em vez declientX/clientY
?<html>
elemento em pixels CSS.viewport
pixels em CSS.screen
pixels do dispositivo.Em relação à sua última pergunta, se os cálculos são semelhantes nos navegadores de desktop e móvel ... Para uma melhor compreensão - nos navegadores móveis - precisamos diferenciar dois novos conceitos: a viewport de layout e a viewport visual . A janela de visualização visual é a parte da página exibida atualmente na tela. A viewport de layout é sinônimo de uma página completa renderizada em um navegador de desktop (com todos os elementos que não são visíveis na viewport atual).
Nos navegadores móveis,
pageX
epageY
ainda são relativos à página em pixels CSS, para que você possa obter as coordenadas do mouse em relação à página do documento. Por outro ladoclientX
eclientY
definir as coordenadas do mouse em relação ao visor visuais .Há outro encadeamento de fluxo de pilha aqui sobre as diferenças entre a viewport visual e a viewport de layout: Diferença entre a viewport visual e a viewport de layout?
Outro bom recurso: http://www.quirksmode.org/mobile/viewports2.html
fonte
O que me ajudou foi adicionar um evento diretamente a esta página e clicar por mim mesmo! Abra seu console nas ferramentas de desenvolvedor / Firebug etc e cole:
Com esse snippet, você pode rastrear sua posição de clique enquanto rola, move a janela do navegador etc.
Observe que pageX / Y e clientX / Y são os mesmos quando você é rolado até o topo!
fonte
A diferença entre eles dependerá em grande parte a qual navegador você está se referindo atualmente. Cada um implementa essas propriedades de maneira diferente, ou de modo algum. O Quirksmode possui uma excelente documentação sobre as diferenças do navegador em relação aos padrões do W3C, como os eventos DOM e JavaScript.
fonte