2012-12-01 18 views
5

के बाद जेएस के साथ div आकार प्राप्त करें मैं इस पर एक/कई CSS3 रूपांतरण लागू करने के बाद जावास्क्रिप्ट में किसी तत्व की ऊंचाई प्राप्त करने का प्रयास कर रहा हूं।CSS3 रूपांतरण

#transformed{ 
    transform:scale(.5); 
} 

दुर्भाग्यवश, JQuery का बाहरी हाइट यह मूर्खतापूर्ण प्रतीत नहीं होता है।

$('#after').outerHeight(); //not affected by the transformation 

उदाहरण: http://jsfiddle.net/mQ2nT/

+1

इंस्पेक्टर एक ही परिणाम देता है। – Musa

+0

@ मूसा की टिप्पणी को देखते हुए, आप शायद भाग्य से बाहर हैं - जब तक आप मैन्युअल रूप से CSS3 ट्रांसफॉर्म नियमों को पार्स करना शुरू नहीं करना चाहते हैं। –

+0

+1 अच्छा सवाल। उत्तर पर इतने सारे वोट लेकिन सवाल पर नहीं जो वास्तव में दिलचस्प है। – Nope

उत्तर

9

आप getBoundingClientRect का उपयोग परिवर्तन के बाद आयाम और पदों को पाने के लिए कर सकते हैं।

बस अपने तत्वों को बदलने, और:

$('#after')[0].getBoundingClientRect(); 
// note the [0], the function is DOM not jQuery's. 

सबसे अच्छी बात यह है कि यह भी उचित स्थिति, आयाम वापस आ जाएगी कि हर परिवर्तन आप लागू करने के बाद है।

आप rotate, skew, translate और सीएसएस जो कुछ भी प्रदान करता है, के लिए स्वतंत्र हैं। जीबीसीआर इसे संभाल लेंगे।

+0

Fiddle http://jsfiddle.net/mQ2nT/2/ – Musa

+0

बहुत अच्छा! इसके बारे में भी सोचा नहीं था। –

+0

@ मुसा: जिज्ञासा से बाहर, क्या मार्जिन समेत 'getBoundingClientRect' से पूछताछ करने का कोई तरीका है? क्रोम में अपना बेवकूफ चलाते समय और divs के मार्जिन को लागू करते समय, jquery मार्जिन को शामिल करने के लिए 'बाहरी हाइट (सत्य)' का उपयोग कर सकता है लेकिन उन्हें 'getBoundingClientRect.height()' संपत्ति द्वारा अनदेखा किया जाता है। यहां देखें: http://jsfiddle.net/mQ2nT/4/ – Nope

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