2011-12-05 8 views
9

मुझे फ़ायरफ़ॉक्स पर सटीक सीएसएस संपत्ति मान ('%' में) पुनर्प्राप्त करने में कोई समस्या है।प्रतिशत सीएसएस मानों को पुनर्प्राप्त करना (फ़ायरफ़ॉक्स में)

<div id="box">box</div> 

और इस सीएसएस:

#box{ 
    width:200px; 
    height:200px; 
    left:10%; 
    position:absolute; 
    background:red; 
} 

और मैं बाईं स्थिति पुनः प्राप्त करना चाहते हैं ('%' में) जे एस द्वारा

मान लीजिए हम इस अत्यंत सरल मार्कअप है

यह mootools के साथ बहुत आसान Obv है (डेमो ->http://jsfiddle.net/steweb/AWdzB/):

0,123,
var left = $('box').getStyle('left'); 

या jQuery (डेमो ->http://jsfiddle.net/steweb/RaVyU/):

var left = $('#box').css('left'); 

या द्वारा सादे js (डेमो ->http://jsfiddle.net/steweb/tUAKA/):

function getStyle(el,styleProp){ //from ppk's quirksmode 
    var x = document.getElementById(el); 
    if (x.currentStyle) 
     var y = x.currentStyle[styleProp]; 
    else if (window.getComputedStyle) 
     var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp); 
    return y; 
} 

var left = getStyle('box','left'); 

लेकिन अगर आप यह पर कोशिश फ़ायरफ़ॉक्स (8.0 .1) आप देखेंगे कि परिणाम सही नहीं है (10% होना चाहिए, लेकिन यह 91px है)। प्रश्न हैं: क्या फ़ायरफ़ॉक्स के इस नए संस्करण पर कोई बग है? क्या कोई जानता है कि यह ज्ञात बग है? क्या मुझसे कुछ गलत हो रही है?

धन्यवाद :)

अद्यतन: मैं पर पुराने फ़ायरफ़ॉक्स विज्ञप्ति भी इसे करने की कोशिश, और यह सही नहीं है (यह हमेशा पिक्सल मान देता है) .. पूर्णता के लिए, यह आईई

+0

अच्छा सवाल, पुराने संस्करण सही '%' मान की रिपोर्ट करते हैं? – Chad

+0

मैंने वीएम चलने वाले एफएफओक्स 5.0 पर कोशिश की, और यह 67.7 पीएक्स लॉग करता है ..:/.. आईई यह सही है (10%) ..लेटर मैं एफएफ 6-7 के साथ कोशिश करूंगा, लेकिन मुझे नहीं लगता कि यह काम करेगा । – stecb

+0

मुझे विंडोज एक्सपी –

उत्तर

2

सही जवाब बग मैं बगजिला को दायर की पर एक टिप्पणी है

https://bugzilla.mozilla.org/show_bug.cgi?id=707691#c7

(भी फ़ायरफ़ॉक्स पर) सही% मूल्य प्राप्त करने के लिए तत्व (या इसकी माता-पिता में से एक) display सेट किया जाना चाहिए none को

टेस्ट: http://jsfiddle.net/4RKsM/

अस्पष्ट बात है: क्यों एक ही ब्राउज़र/संस्करण पर (देखें, Firefox 7 XP/Win7 या मैक OSX/ubuntu पर ओपेरा 11.5 पर) लेकिन विभिन्न ओएस पर, व्यवहार अलग है?

बीटीडब्ल्यू, spec @ thg435 पोस्ट (और एमडीएन पर रिपोर्ट) अभी भी प्रवाह में है।

2

के रूप में पर ठीक से काम करता मुझे पता है, इसने कभी प्रतिशत नहीं दिखाया है (मैं एफएफ, ओपेरा और क्रोम का उपयोग करता हूं)। तो मुझे लगता है कि यह केवल एक फ़ायरफ़ॉक्स समस्या नहीं है।

हालांकि, आप इसे मैन्युअल रूप से गणना कर सकते हैं, लेकिन ब्राउज़र विंडो छोटी है, तो यह निश्चित मान के करीब है।

parseInt($('#box').css('left'))/ $(window).width()*100; 
+0

मैं एफएफ/क्रोम/ओपेरा का उपयोग करता हूं और मुझे% मिलता है ... मैं गणना नहीं करना चाहता, मैं सिर्फ यह जानना चाहता हूं कि सीएसएस संपत्ति (% में व्यक्त) का मूल्य प्राप्त करना संभव है या नहीं:) – stecb

+0

ठीक है, मैंने अपनी कोशिश की है, और मुझे ओपेरा में पिक्सेल आकार भी मिला है। – tildy

+0

क्या मंच/संस्करण? :) धन्यवाद;) – stecb

6

यह documented है:

किसी भी सीएसएस संपत्ति का उपयोग किया गया मान है कि संपत्ति के अंतिम मूल्य के बाद सभी गणना प्रदर्शन किया गया है है। विंडो.getComputedStyle को कॉल करके प्रयुक्त मान पुनर्प्राप्त किए जा सकते हैं। आयाम (जैसे चौड़ाई, line-height) सभी पिक्सल में हैं ... आदि

वहाँ, किसी दिए गए तत्व के लिए "निर्दिष्ट" सीएसएस मूल्यों तक पहुँचने के लिए कोई रास्ता नहीं होने के लिए जब तक आप जानते हैं कि वास्तव में कौन सीएसएस नियम लागू होता है लगता है और document.stylesheets या इसी तरह के इंटरफ़ेस का उपयोग करके इस नियम को पार्स करें।

+0

mmm मुझे यह नहीं मिला .. अन्य ब्राउज़रों पर आपको% मूल्य क्यों मिलता है? और (जैसा कि @EmreErkan की सूचना दी गई है) विंडोज़ पर फ़ायरफ़ॉक्स 7 पर क्यों आपको% मूल्य भी मिलता है? – stecb

+0

यह शायद इसलिए है क्योंकि चश्मा (http://www.w3.org/TR/DOM-Level-2-Style/css) निर्दिष्ट मान प्राप्त करने के लिए किसी भी तरह से पूर्ववत नहीं करते हैं। यह भी वही प्रश्न देखें: http://stackoverflow.com/questions/1013478/mapping-computed-css-styles-to- निर्दिष्ट- – georg

+0

मैंने अपने व्यक्तिगत कंप्यूटर (विंडोज 7, फ़ायरफ़ॉक्स 7) के साथ घर पर कोशिश की और ' पीएक्स' मूल्य। –

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