Get width in pixels from element with style set with %?

后端 未结 7 1618
庸人自扰
庸人自扰 2021-01-31 00:57

I have this element:

I want to get it\'s width in pixels. I just tried this:

相关标签:
7条回答
  • 2021-01-31 01:38

    You want to get the computed width. Try: .offsetWidth

    (I.e: this.offsetWidth='50px' or var w=this.offsetWidth)

    You might also like this answer on SO.

    0 讨论(0)
  • 2021-01-31 01:39

    Not a single answer does what was asked in vanilla JS, and I want a vanilla answer so I made it myself.

    clientWidth includes padding and offsetWidth includes everything else (jsfiddle link). What you want is to get the computed style (jsfiddle link).

    function getInnerWidth(elem) {
        return parseFloat(window.getComputedStyle(elem).width);
    }
    

    EDIT: getComputedStyle is non-standard, and can return values in units other than pixels. Some browsers also return a value which takes the scrollbar into account if the element has one (which in turn gives a different value than the width set in CSS). If the element has a scrollbar, you would have to manually calculate the width by removing the margins and paddings from the offsetWidth.

    function getInnerWidth(elem) {
        var style = window.getComputedStyle(elem);
        return elem.offsetWidth - parseFloat(style.paddingLeft) - parseFloat(style.paddingRight) - parseFloat(style.borderLeft) - parseFloat(style.borderRight) - parseFloat(style.marginLeft) - parseFloat(style.marginRight);
    }
    

    With all that said, this is probably not an answer I would recommend following with my current experience, and I would resort to using methods that don't rely on JavaScript as much.

    0 讨论(0)
  • 2021-01-31 01:41
    yourItem.style['cssProperty']
    

    this way you can call the property string dynamically

    0 讨论(0)
  • 2021-01-31 01:49

    You can use offsetWidth. Refer to this post and question for more.

    console.log("width:" + document.getElementsByTagName("div")[0].offsetWidth + "px");
    div {border: 1px solid #F00;}
    <div style="width: 100%; height: 10px;"></div>

    0 讨论(0)
  • 2021-01-31 01:51

    Try jQuery:

    $("#banner-contenedor").width();
    
    0 讨论(0)
  • 2021-01-31 01:56
    document.getElementById('banner-contenedor').clientWidth
    
    0 讨论(0)
提交回复
热议问题