我有这个要素:
<div style="width: 100%; height: 10px;"></div>
我想获得它的宽度(以像素为单位)。我只是试过这个:
document.getElementById('banner-contenedor').style.width
哪个返回100%
。使用JavaScript能否实际获得元素的宽度(以像素为单位)?
我有这个要素:
<div style="width: 100%; height: 10px;"></div>
我想获得它的宽度(以像素为单位)。我只是试过这个:
document.getElementById('banner-contenedor').style.width
哪个返回100%
。使用JavaScript能否实际获得元素的宽度(以像素为单位)?
Answers:
document.getElementById('banner-contenedor').clientWidth
Vanilla JS的要求不是一个单一的答案,我想要一个香草的答案,所以我自己做了。
clientWidth包含padding,而offsetWidth包含其他所有内容(jsfiddle链接)。您想要的是获取计算出的样式(jsfiddle链接)。
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);
}
综上所述,根据当前经验,这可能不是我建议的答案,我将求助于使用不太依赖JavaScript的方法。
100%
;这不起作用/有问题;
width: 100%
,然后使用getComputedStyle
来获取像素的宽度,但是它总是返回空值,但是在超时回调中,它可以获取正确的像素数值。