2013-05-01 4 views
6

ब्राउज़र जावास्क्रिप्ट के बारे में, window.getComputedStyle() विधि किसी तत्व पर लागू सीएसएस गुणों के अंतिम उपयोग किए गए मान देना है। MDN documentation के अनुसार, इसका अर्थ है "सभी गणनाओं के बाद"।क्यों नहीं मिलता है कम्प्यूटेड स्टाइल खाता मार्जिन ढहने में ध्यान देता है?

हालांकि, ऐसा लगता है कि "सभी गणनाओं" में मार्जिन ढहने शामिल नहीं है। फ़ायरफ़ॉक्स और क्रोम (कम से कम) में, निर्देश getComptedStyle().marginBottom गणना किए गए मान को किसी मार्जिन ढहने की गणना करने से पहले देता है। क्योंकि (मोटे तौर पर) अपनी सामग्री ऊंचाई शून्य (सीएफ the W3C CSS2 Recommendation) है

<div style="margin: 10px 0 15px 0"></div> 

इसके ऊपर और नीचे मार्जिन ढह किया जाएगा:

उदाहरण के लिए निम्नलिखित तत्व पर विचार करें। , कारण मार्जिन गिर करने के लिए

getComputedStyle().marginTop → 10px 
getComputedStyle().marginBottom → 15px 
getBoundingClientRect().top → {top of margin box} + marginTop 
getBoundingClientRect().bottom → idem top 

लेकिन, लेआउट बाउंडिंग ग्राहक आयत से पहले 10px के अंतर, और बाद 5px के अंतर से, यानी max(0, marginBottom - marginTop) पता चलता है: CSSOM तरीकों इन मूल्यों को वापस आ जाएगी।

getComputedStyle().marginBottom सीधे 5px क्यों नहीं लौटाता है, निर्दिष्ट 15px के बजाय वास्तविक गणना मान "सभी गणनाओं के बाद" किया जाता है? क्या यह एक डब्ल्यू 3 सी-अनुशंसित व्यवहार है? (मैंने w3.org दस्तावेज़ों में इसके बारे में कुछ भी नहीं देखा है।)

क्या यह एक बग या सुविधा है?

उत्तर

1

मुझे आपका पूरा कोड नहीं दिखाई देता है, लेकिन मुझे लगता है कि फ़ंक्शन का नाम वास्तव में "यू" के साथ "getComputedStyle" है।

एक टाइपो? क्या यह इतना आसान हो सकता है? आप पहले नहीं होंगे - स्वयं शामिल हैं।

इससे उम्मीद है कि यह मदद करता है।

+0

हां वह एक टाइपो था। धन्यवाद –

+0

Merci, @Martin। – Parapluie

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