我正在尝试使用 CSS 更改 HTML 页面上的元素,然后立即读取其视觉属性。但是,CSS 强制样式直到稍后(下一个“框架”)才应用。
CSS:
.node {
width: 10px;
}
JavaScript:
// Create element
var element = document.createElement("div");
element.className = "node";
document.body.appendChild(element);
console.log(element.clientWidth);
上面调用的输出log
应该是10
,但NaN
如果立即调用它(但它被正确读取为10
在一帧之后)。
使用getComputedStyle()
给出了类似的结果:
var style = getComputedStyle(element);
console.log(element.style);
首次运行时输出为“”,但在第一帧之后为“10px”(正确)。
我假设我必须等待一次浏览器的重新布局,直到我可以读取该属性。有没有办法强制浏览器计算该元素的尺寸?或者那可能是不好的做法;有没有一种简单的方法来读取 CSS 的 width 属性?
换句话说,这里的最佳做法是什么?
注意:这里尽量避免使用 jQuery 或其他库。