YUI - 获取真元素宽度?

时间:2010-11-09 17:29:23

标签: yui width

我正在使用YUI并且需要获得元素的真实宽度。元素的宽度可以如下确定。

宽度+ border-left + border-right + padding-left + padding-right + margin-left + margin-right。

以下是我的想法。它似乎有效。我只是想知道这是否是确定这一点的最佳方式还是有更有效的方法?

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;
}

1 个答案:

答案 0 :(得分:3)

offsetWidth属性可以完全返回您想要的内容。