Javascript 元素的clientWidth为0,除非我使用css设置它

Javascript 元素的clientWidth为0,除非我使用css设置它,javascript,angular,Javascript,Angular,在CSS中,如何在不设置元素宽度属性的情况下获得元素宽度?如果我设置了宽度,它可以工作,但如果我不设置,宽度仅为0,即使我可以看到它不是在使用调试器检查之后 let width = this.htmlElement.clientWidth; HTML 请改用offsetWidth clientWidth的第一行是 对于没有CSS或CSS的元素,Element.clientWidth属性为零 内联布局框,否则为中元素的内部宽度 像素 另一方面,offsetWidth是一个只读属性,它返回元素的布

在CSS中,如何在不设置元素宽度属性的情况下获得元素宽度?如果我设置了宽度,它可以工作,但如果我不设置,宽度仅为0,即使我可以看到它不是在使用调试器检查之后

let width = this.htmlElement.clientWidth;
HTML

请改用offsetWidth

clientWidth的第一行是

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

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

var el=document.getElementById'foobar'; console.log'clientWidth:'+el.clientWidth; console.log'offsetWidth:'+el.offsetWidth;
这有宽度…………修改你的帖子以获得清晰的问题标签是一个内联元素,意味着它只需要它所需要的大小。这样做是否有帮助:?我仍然有相同的问题。offsetWidth,可能与Angulari有关如果你仍然得到0,然后元素没有宽度,我可以使用chrome调试器在屏幕上看到宽度,其中有文本,我告诉你,如果offsetWidth返回0,它没有宽度。你确定你看到的不仅仅是溢出吗?尝试设置overflow:hidden并查看是否仍然可以看到它,或者更好的是,在控制台中检查它是否具有布局宽度。我在chrome element inspector中查看元素,它以蓝色突出显示元素并报告尺寸8 x 20,元素中也有文本
<label [model]="foobar">0</label>
let width = this.htmlElement.offsetWidth;