如何在不设置CSS的width属性的情况下获得元素的宽度?如果我设置宽度,它可以工作,但是如果我不设置宽度,则即使我在调试器检查后发现宽度不是0,它也只是0。

let width = this.htmlElement.clientWidth;


的HTML

<label [model]="foobar">0</label>

最佳答案

使用offsetWidth代替

let width = this.htmlElement.offsetWidth;


clientWidthdocs中的第一行是


  对于没有CSS或元素的Element.clientWidth属性为零
  内联布局框,否则为元素中的内部宽度
  像素


另一方面,offsetWidth是一个只读属性,它返回元素的布局宽度,而不管元素是否使用给定宽度设置样式。



var el = document.getElementById('foobar');

console.log('clientWidth : '+ el.clientWidth );
console.log('offsetWidth : '+ el.offsetWidth );

<label id="foobar">This has width ..................</label>

关于javascript - 除非我使用CSS设置,否则element的clientWidth为0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45260088/

10-12 12:50