javascriptdom

How to get element width/height with margin, padding, border in Native JavaScript (no jQuery)


Looking for reliable method to calculate the element's width/height + margin - padding + border using native JS only and be xbrowser (IE8+)


Solution

  • If you're only dealing with pixel values for the margin, padding and border properties, you can do the following:

    // we're assuming a reference to your element in a variable called 'element'
    var style = element.currentStyle || window.getComputedStyle(element),
        width = element.offsetWidth, // or use style.width
        margin = parseFloat(style.marginLeft) + parseFloat(style.marginRight),
        padding = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight),
        border = parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);
    
    alert(width + margin - padding + border);
    

    If you're dealing with other kinds of values (like ems, points or values like auto), I would like to refer you to this answer.