我有这个元素:
<div style="width: 100%; height: 10px;"></div>
我希望得到它的宽度(以像素为单位)。我刚试过这个:
document.getElementById('banner-contenedor').style.width
返回100%
。是否可以使用javascript实际获取元素的宽度(以像素为单位)?
答案 0 :(得分:71)
document.getElementById('banner-contenedor').clientWidth
答案 1 :(得分:12)
答案 2 :(得分:5)
没有一个答案可以解决香草JS中的问题,我想要一个香草的回答,所以我自己做了。
clientWidth包含填充,offsetWidth包含其他所有内容(jsfiddle link)。你想要的是获得计算出的样式(jsfiddle link)。
function getInnerWidth(elem) {
return parseFloat(window.getComputedStyle(elem).width);
}
编辑:getComputedStyle
是非标准的。某些浏览器会返回一个值,如果元素有一个值,则会将滚动条考虑在内(这反过来会给出与CSS中设置的宽度不同的值)。如果元素有滚动条,则必须通过从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);
}
答案 3 :(得分:3)
您可以使用offsetWidth
。有关详情,请参阅此 post 和 question 。
console.log("width:" + document.getElementsByTagName("div")[0].offsetWidth + "px");
&#13;
div {border: 1px solid #F00;}
&#13;
<div style="width: 100%; height: 10px;"></div>
&#13;
答案 4 :(得分:2)
尝试jQuery:
$("#banner-contenedor").width();
答案 5 :(得分:-1)
答案 6 :(得分:-2)
yourItem.style['cssProperty']
这样你可以动态调用属性字符串