स्क्रीनएक्स / वाई, क्लाइंटएक्स / वाई और पेजएक्स / वाई के बीच क्या अंतर है?


581

screenX/ Y, clientX/ Yऔर pageX/ के बीच क्या अंतर है Y?

आईपैड सफारी के लिए भी, डेस्कटॉप पर समान गणनाएं हैं- या व्यूपोर्ट के कारण कुछ अंतर है?

यह बहुत अच्छा होगा यदि आप मुझे एक उदाहरण के लिए इंगित कर सकते हैं।


2
एक अन्य डेमो जो माउस निर्देशांक प्राप्त करने के लिए पांच अलग-अलग गुणों (स्क्रीन, क्लाइंट, पेज, लेयर, ऑफसेट) का उपयोग करता है।
अकिनुरी

जवाबों:


504

जावास्क्रिप्ट में:

pageX, pageY, screenX, screenY, clientX, और clientYरिटर्न एक नंबर जो भौतिक "CSS पिक्सेल" की संख्या बताने वाले एक बिंदु संदर्भ बिंदु से है। घटना बिंदु वह स्थान है जहां उपयोगकर्ता ने क्लिक किया, संदर्भ बिंदु ऊपरी बाएँ में एक बिंदु है। ये गुण उस संदर्भ बिंदु से क्षैतिज और ऊर्ध्वाधर दूरी लौटाते हैं।

pageXऔर pageY:
ब्राउज़र में पूरी तरह से प्रदान की गई सामग्री क्षेत्र के शीर्ष बाईं ओर सापेक्ष। यह संदर्भ बिंदु ऊपरी बाईं ओर URL बार और बैक बटन के नीचे है। यह बिंदु ब्राउज़र विंडो में कहीं भी हो सकता है और वास्तव में स्थान बदल सकता है यदि पृष्ठों के भीतर एम्बेडेड स्क्रॉल करने योग्य पृष्ठ हैं और उपयोगकर्ता स्क्रॉलबार ले जाता है।

screenXऔर screenY:
भौतिक स्क्रीन / मॉनिटर के ऊपरी बाएँ के सापेक्ष, यह संदर्भ बिंदु केवल तभी चलता है जब आप मॉनिटर या मॉनिटर रिज़ॉल्यूशन की संख्या बढ़ाते या घटाते हैं।

clientXऔर clientY: ब्राउज़र विंडो
के कंटेंट एरिया ( व्यूपोर्ट ) के ऊपरी बाएं किनारे से संबंधित । यदि उपयोगकर्ता ब्राउज़र के भीतर से कोई स्क्रॉलबार ले जाता है तो भी यह बिंदु आगे नहीं बढ़ता है।

उस दृश्य के लिए जिस पर ब्राउज़र गुण का समर्थन करते हैं:

http://www.quirksmode.org/dom/w3c_cssom.html#t03

w3schools में एक ऑनलाइन जावास्क्रिप्ट दुभाषिया और संपादक हैं ताकि आप देख सकें कि प्रत्येक क्या करता है

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>


4
और jquery ऑफसेट और ऑफसेट में मूल कंटेनर के सापेक्ष हैं
मुहम्मद उमर

2
W3schools का लिंक अब केवल संदर्भ अनुभाग पर उपलब्ध है: w3schools.com/jsref/tryit.asp?filename=try_dom_event_clientxy
मान्य

1
मुझे लगता है कि यह पेजएक्स / पेजवाई के लिए एक भ्रामक या कम से कम अप्रभावी स्पष्टीकरण है (और परिणाम से, प्रश्न) क्योंकि यह URL बार और बैक बटन का संदर्भ देता है जबकि यह पृष्ठ सामग्री के संदर्भ में बेहतर समझा जाता है जैसे दृश्य विवरण। उत्तर बताता है। इसके अलावा, w3schools उदाहरण सहायक नहीं है क्योंकि यह केवल एक x / y जोड़ी को आउटपुट करता है, और इसमें कोई स्क्रॉलिंग नहीं है जो अंतर प्रदर्शित करेगा।
रॉबर्ट मॉन्फेरा

4
PageX / PageY और ClientX / clientY स्पष्टीकरण आपस में जुड़े हुए हैं। आपको इसे सही करना चाहिए। यह भ्रामक है
नवप्रीत कौर

1
मुझे लगता है कि @NavpreetKaur सही है। यह उत्तर क्लाइंटएक्स बनाम पेजएक्स के बारे में विपरीत है
झोउजी

496

यहाँ एक तस्वीर है जो pageYऔर के बीच के अंतर को बता रही है clientY

पेज बनाम क्लाइंट

उसी के लिए pageXऔर clientXक्रमशः।


pageX/Y निर्देशांक पूरे रेंडर पेज के ऊपरी बाएँ कोने के सापेक्ष हैं (स्क्रॉलिंग द्वारा छिपाए गए भागों सहित),

जबकि clientX/Y निर्देशांक पृष्ठ के दृश्य भाग के ऊपरी बाएँ कोने के सापेक्ष होते हैं, तो ब्राउज़र विंडो के माध्यम से "देखा" जाता है।

डेमो देखें

आपको शायद कभी ज़रूरत नहीं पड़ेगी screenX/Y


21
बहुत बढ़िया, डेमो के लिए धन्यवाद, पाठ से बेहतर बताते हैं।
राहुल प्रसाद

मुझे @ SimoEndre की व्याख्या सबसे अच्छी लगी
पियरे

9
कल्पना करना कि क्या screenX/Yहै?
अजय

1
मैं पृष्ठ पर एक विशेष आयताकार क्षेत्र पर एक क्लिक घटना को बांधना चाहता हूं, इसलिए pageX/pageYइसका उपयोग किया जाना चाहिए clientX/clientY?
Techie_28

1
साधारण x और y के बारे में क्या? वे क्लाइंटएक्स / वाई के समान प्रतीत होते हैं जब मैंने इसे आज़माया था, लेकिन मुझे इस पर एक निश्चित संदर्भ नहीं मिला
zhouji

117
  1. पेजएक्स / वाई<html> सीएसएस पिक्सल में तत्व के सापेक्ष निर्देशांक देता है ।
  2. क्लाइंटएक्स / वाईviewport सीएसएस पिक्सल के सापेक्ष निर्देशांक देता है ।
  3. स्क्रीनएक्स / वाईscreen डिवाइस पिक्सल में सापेक्ष निर्देशांक देता है ।

अपने आखिरी सवाल के बारे में अगर गणना डेस्कटॉप और मोबाइल ब्राउज़र पर समान है ... एक बेहतर समझ के लिए - मोबाइल ब्राउज़र पर - हमें दो नई अवधारणा को अलग करने की आवश्यकता है: लेआउट व्यूपोर्ट और विजुअल व्यूपोर्ट । दृश्य व्यूपोर्ट उस पृष्ठ का हिस्सा है जिसे वर्तमान में ऑनस्क्रीन दिखाया गया है। लेआउट व्यूपोर्ट एक डेस्कटॉप ब्राउज़र पर प्रस्तुत पूर्ण पृष्ठ का पर्याय है (उन सभी तत्वों के साथ जो वर्तमान व्यूपोर्ट पर दिखाई नहीं देते हैं)।

मोबाइल ब्राउज़र पर pageXऔर pageYअभी भी सीएसएस पिक्सल के पेज के सापेक्ष हैं ताकि आप दस्तावेज़ पृष्ठ के सापेक्ष माउस निर्देशांक प्राप्त कर सकें। दूसरी ओर clientXऔर दृश्य व्यूपोर्ट केclientY संबंध में माउस निर्देशांक को परिभाषित करता है ।

दृश्य व्यूपोर्ट और लेआउट व्यूपोर्ट के बीच अंतर के बारे में यहां एक और स्टैकओवरफ्लो धागा है: दृश्य व्यूपोर्ट और लेआउट व्यूपोर्ट के बीच अंतर?

एक और अच्छा संसाधन: http://www.quirksmode.org/mobile/viewports2.html


27

मुझे इस पृष्ठ पर सीधे एक घटना जोड़ने और अपने लिए क्लिक करने में क्या मदद मिली! डेवलपर टूल / फायरबग आदि में अपना कंसोल खोलें और इसे पेस्ट करें:

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

इस स्निपेट के साथ, आप स्क्रॉल करते ही अपनी क्लिक स्थिति को ट्रैक कर सकते हैं, ब्राउज़र विंडो को स्थानांतरित कर सकते हैं, आदि।

ध्यान दें कि जब आप शीर्ष पर सभी तरह से स्क्रॉल किए जाते हैं तो पेजएक्स / वाई और क्लाइंटएक्स / वाई एक ही होते हैं!


5

उन के बीच का अंतर काफी हद तक इस बात पर निर्भर करेगा कि आप वर्तमान में किस ब्राउज़र का उल्लेख कर रहे हैं। प्रत्येक व्यक्ति इन गुणों को अलग-अलग लागू करता है, या बिल्कुल भी नहीं। डोम और जावास्क्रिप्ट इवेंट्स जैसे W3C मानकों के संबंध में Quirksmode में ब्राउज़र के अंतर के बारे में शानदार दस्तावेज हैं।


4
आपका उत्तर अच्छा है, लेकिन यह जल्द ही पुराना हो जाएगा quirksmode.org/mobile/tableViewport_desktop.html
Dan
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.