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」(正しく)です。
プロパティを読み取れるようになるまで、ブラウザの再レイアウトを1回待つ必要があると想定しています。ブラウザにその要素の寸法を計算させる方法はありますか?あるいは、それは悪い習慣かもしれません。CSSのwidthプロパティを読み取る簡単な方法はありますか?
言い換えれば、ここでのベストプラクティスは何ですか?
注:ここでは、jQueryやその他のライブラリの使用を避けようとしています。