2012-06-22 13 views
8

मेरे पास सरल div टैग है, जो पूरी तरह से एक HTML दस्तावेज़ में स्थित है। जब क्रोम में मैंने अपने "दाएं" सीएसएस नियम को पिक्सल में एक निश्चित मान पर सेट किया, और इसका "बायां" नियम "ऑटो" पर सेट किया गया, और उसके तुरंत बाद jquery की स्थिति() विधि का उपयोग करके अपनी बायीं स्थिति निर्धारित करें, मान वापस लौटाया गया इस तरह का कुछ है: 122.6363525390625। वही ऑफ़सेट() विधि के लिए जाता है।jQuery की स्थिति() और ऑफसेट() विधियां क्रोम में आंशिक संख्या क्यों लौटाती हैं?

दूसरी तरफ फ़ायरफ़ॉक्स में यह समस्या नहीं है।

क्या आप मुझे बता सकते हैं कि ऐसा क्यों होता है और यदि इसे रोकने का कोई तरीका है? अग्रिम धन्यवाद!

+0

क्या आप इस व्यवहार को प्रदर्शित करने के लिए एक छोटा सा उदाहरण स्थापित कर सकते हैं? मैं इसे यहां पुन: पेश नहीं कर सका: http://jsfiddle.net/Wjvak/ – Simon

+0

मूल विधि आज़माएं: 'getComputedStyle (yourElem) .getPropertyValue (' left ') '। यदि यह एक फ्लोट नंबर देता है, तो यह वही है जो क्रोम आपको देता है और आपको संख्या को मैन्युअल रूप से पूर्णांक में परिवर्तित करना होगा। –

उत्तर

10

क्योंकि जब आप प्रतिशत चौड़ाई का उपयोग करते हैं तो गणित क्या काम करता है। कल्पना कीजिए कि आप इस लेआउट है:

<div style="width: 111px"> 
    <div style="width: 50%"></div> 
</div> 

भीतरी तत्व की चौड़ाई 55.5 पिक्सल, नहीं एक प्राकृतिक संख्या को गणना करता है। सटीक सीएसएस विशेषताओं के आधार पर यह आसानी से कुछ और दशमलव स्थानों पर काम कर सकता है।

क्रोम uses subpixel rendering, इसलिए आप इस व्यवहार को देखते हैं।

अंत में: मुझे यकीन नहीं है कि इससे आपको कोई समस्या क्यों होगी, लेकिन निश्चित रूप से यदि आप प्राकृतिक संख्या में घूमना चाहते हैं तो आप Math.round(x) का उपयोग कर सकते हैं।

-2

क्रोम में मानों को छोटा कर दिया जाता है, इसलिए 120, 120.5 और 120.6 सभी एक ही चौड़ाई दिखाते हैं, इसलिए आपको दशमलव मान का उपयोग करके इसके बारे में चिंता करने की आवश्यकता नहीं है। .5 पिक्सेल की तरह कुछ भी नहीं है। पिक्सेल पूरी इकाइयां हैं। यदि आपके पास दशमलव मान लौटने वाले फ़ंक्शंस की समस्या है तो parseInt का उपयोग क्यों न करें? आपको इस बात को ध्यान में रखने के लिए ब्राउजर पर नहीं जाना चाहिए या नहीं तो आपका पृष्ठ टूट सकता है।

संबंधित मुद्दे