我通过动态创建的元素属性获得了这种非常奇怪的行为。
ngAfterViewInit() {
// --- more dom manipulation ---
this.viewport = document.createElement('div');
// --- more dom manipulation ---
this.wrapper.parentNode.insertBefore(this.viewport, this.wrapper); // <-- element inserted into DOM before checking width
console.log(this.viewport);
console.log(this.viewport.offsetWidth);
}
我创建一个div元素,插入它并读取它的属性。只有第一个控制台日志正确打印offsetWidth(我屏幕上的884)但是当我尝试直接打印offsetWidth时,它是0。
所有DOM更改都能正常工作,并在屏幕上产生预期效果,但这种对维度的编程访问除外。
注意:我知道直接dom操纵对于工人或SSR来说并不好,但这是我稍后会遇到的桥梁。此外,这些UX组件可以正确地进行预处理。