2010-11-09 12 views
5

मैं यूयूआई का उपयोग कर रहा हूं और तत्व की वास्तविक चौड़ाई प्राप्त करने की आवश्यकता है। एक तत्व की चौड़ाई निम्नानुसार निर्धारित की जा सकती है।यूयूआई - सही तत्व चौड़ाई प्राप्त करें?

चौड़ाई + सीमा-बाएं + सीमा-दाएं + पैडिंग-बाएं + पैडिंग-दाएं + मार्जिन-बाएं + मार्जिन-दाएं।

नीचे मैं क्या आया हूं। ऐसा लगता है कि यह काम कर रहा है। मैं बस सोच रहा था कि यह निर्धारित करने के लिए यह सबसे अच्छा तरीका है या क्या वहां एक और अधिक प्रभावी तरीका है?

YUI().use('node', function(Y) { 
    var node = Y.one('#nav'); 
    var nodeWidth = trueElementWidth(node); 
    alert(nodeWidth); 
}); 

function trueElementWidth(el) { 
    var width = 0; 
    var attributes = ['border-left', 'border-right', 'padding-left', 'padding-right', 'width', 'margin-right', 'margin-left']; 
    for(var i=0; i < attributes.length; i++) { 
     width = width + removePx(el.getComputedStyle(attributes[i])); 
    } 
    return width; 
} 

function removePx(el) { 
    el = el.toString(); 
    length = el.length - 2; 
    elDimension = parseInt(el.substring(0, length)); 
    return isNaN(elDimension) ? 0 : elDimension; 
} 
+0

त्वरित उत्तर: quircksmode.org पर जाएं, वे क्रॉस ब्राउज़र समस्या को हल करते हैं – Dan

उत्तर

3

offsetWidth संपत्ति है जो वास्तव में आप जो चाहते हैं वह लौटाती है।

+0

ऑफसेट विड्थ में मार्जिन मान शामिल नहीं हैं। – wpjmurray

+0

मार्जिन तत्व का हिस्सा नहीं है, है ना? –

+1

नहीं, यह नहीं है। मुझे लगता है कि 'ऑफसेटविड्थ' (जिसमें केवल पैडिंग + सीमा शामिल है) ओपी के विनिर्देशों को बिल्कुल पूरा नहीं करती है लेकिन यह उनकी जरूरतों को पूरा करती है। – casablanca

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