如何获取DOM元素的尺寸,减去边框和填充?

rvi*_*hne 6 javascript css

如何<div>使用纯JavaScript获取(或任何其他元素)的内容框的大小?通过内容框,我不是指div中文本的大小,我的意思是元素的屏幕尺寸减去边框和填充.

元素的边界框

这就是我在Chrome开发工具中看到的内容.我只想要JavaScript中的蓝色部分(720 x 540).我offsetHeight和公司的问题是它们返回图形中黑色实心矩形的尺寸(很难看到 - 在边距和边框之间).

请注意,可能会也可能不会设置widthheightCSS属性; 我想要的尺寸无论如何.进一步注意,填充和边框可能是一致的,也可能不一致(例如,它可能只有一个边框).

the*_*eks 6

element.clientWidth 会给你宽度,包括填充(但没有边框).

然后,你可以和和parseFloat的值.这是一个例子:paddingLeftpaddingRight

 function getElementContentWidth(element) {
  var styles = window.getComputedStyle(element);
  var padding = parseFloat(styles.paddingLeft) +
                parseFloat(styles.paddingRight);

  return element.clientWidth - padding;
}
Run Code Online (Sandbox Code Playgroud)

  • 你怎么样`padding:2rem`不是'px`作为单位? (2认同)

rvi*_*hne 2

我找到了一个似乎可以正常工作并且得到很好支持的解决方案。但我仍然会接受其他不需要从字符串中解析数字的答案。必须有别的办法!

var style = window.getComputedStyle(my_div);
var width = parseFloat(style.width);
var height = parseFloat(style.height);
Run Code Online (Sandbox Code Playgroud)