screenX
/ Y
, clientX
/ Y
Ve pageX
/ arasındaki fark nedir Y
?
Ayrıca iPad Safari için hesaplamalar masaüstünde olduğu gibi mi — VEYA görünüm penceresi nedeniyle bir fark var mı?
Beni bir örneğe yönlendirebilirsen harika olur.
screenX
/ Y
, clientX
/ Y
Ve pageX
/ arasındaki fark nedir Y
?
Ayrıca iPad Safari için hesaplamalar masaüstünde olduğu gibi mi — VEYA görünüm penceresi nedeniyle bir fark var mı?
Beni bir örneğe yönlendirebilirsen harika olur.
Yanıtlar:
JavaScript'te:
pageX
, pageY
, screenX
, screenY
, clientX
, Ve clientY
döner fiziksel “CSS pikseller” sayısını belirten bir sayı nokta referans noktadan. Olay noktası kullanıcının tıkladığı yerdir, referans noktası sol üstteki bir noktadır. Bu özellikler, referans noktasından yatay ve dikey mesafeyi döndürür.
pageX
ve pageY
:
Tarayıcıda tamamen oluşturulmuş içerik alanının sol üst kısmına göre. Bu referans noktası, sol üstteki URL çubuğunun ve geri düğmesinin altındadır. Bu nokta tarayıcı penceresinin herhangi bir yerinde olabilir ve sayfaların içine katıştırılmış gömülü kaydırılabilir sayfalar varsa ve kullanıcı bir kaydırma çubuğunu hareket ettirirse konumu değiştirebilir.
screenX
ve screenY
:
Fiziksel ekranın / monitörün sol üst kısmına göre bu referans noktası yalnızca monitör sayısını veya monitör çözünürlüğünü artırır veya azaltırsanız hareket eder.
clientX
ve clientY
: Tarayıcı penceresinin
içerik alanının ( görünüm penceresi ) sol üst kenarına göre . Kullanıcı tarayıcı içinden bir kaydırma çubuğu hareket ettirse bile bu nokta hareket etmez.
Hangi tarayıcıların hangi özellikleri desteklediğini görmek için:
http://www.quirksmode.org/dom/w3c_cssom.html#t03
w3schools'un çevrimiçi bir Javascript yorumlayıcısı ve editörü vardır, böylece her birinin ne yaptığını görebilirsiniz
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>
İşte pageY
ve arasındaki farkı açıklayan bir resim clientY
.
Sırasıyla pageX
ve için aynıdır clientX
.
pageX/Y
koordinatlar, oluşturulan sayfanın sol üst köşesine göredir (kaydırma ile gizlenen parçalar dahil),
süre clientX/Y
koordinatlar sayfanın görünen kısmının sol üst köşesine göredir, tarayıcı penceresinde "görüldü".
Muhtemelen asla ihtiyacın olmayacak screenX/Y
screenX/Y
olduğunu görselleştirmek ister misiniz?
pageX/pageY
yerine kullanılmalıdır clientX/clientY
?
<html>
CSS piksellerindeki öğeye .viewport
CSS piksellerindeki .screen
aygıt piksellerine göre koordinatları verir .Hesaplamalar masaüstü ve mobil tarayıcılarda benzerse son sorunuzla ilgili ... Daha iyi bir anlayış için - mobil tarayıcılarda - iki yeni kavramı ayırmamız gerekiyor: düzen görünümü ve görsel görünüm . Görsel görünüm, sayfanın o anda ekranda gösterilen parçasıdır. Düzen görünüm penceresi, bir masaüstü tarayıcıda oluşturulan tam sayfa ile eşanlamlıdır (geçerli görünümde görünmeyen tüm öğelerle).
Mobil tarayıcılarda pageX
ve pageY
hala CSS pikseli cinsinden sayfayla ilişkilidir, böylece belge sayfasına göre fare koordinatlarını elde edebilirsiniz. Öte yandan clientX
ve clientY
ilgili fare koordinatlar görsel görünüm .
Burada, görsel görüntü alanı ve düzen görünümü penceresi arasındaki farklarla ilgili başka bir yığın akışı iş parçacığı var: Görsel görünüm alanı ve düzen görünümü penceresi arasındaki fark?
Başka bir iyi kaynak: http://www.quirksmode.org/mobile/viewports2.html
Bana yardımcı olan şey, doğrudan bu sayfaya bir etkinlik eklemek ve kendim için tıklamaktı! Konsolunuzu geliştirici araçlarında / Firebug vb. İçinde açın ve yapıştırın:
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
Bu snippet ile, tıklama, tarayıcı penceresini hareket ettirme vb. Gibi tıklama konumunuzu izleyebilirsiniz.
En üste kaydırdığınızda pageX / Y ve clientX / Y'nin aynı olduğuna dikkat edin!
Bunlar arasındaki fark büyük ölçüde şu anda başvurduğunuz tarayıcıya bağlı olacaktır. Her biri bu özellikleri farklı şekilde uygular ya da hiç uygulamaz. Quirksmode , DOM ve JavaScript Etkinlikleri gibi W3C standartları ile ilgili tarayıcı farklılıkları hakkında harika belgelere sahiptir.