私が考えることができる最も簡単なことは、設定したコンテナにすべてをラップし、display: none
それを DOM に追加することです。ブラウザーはそれをレンダリングしませんが、計算されたスタイルを照会することができます。
次の例は、構造が DOM に接続されていない場合に jQuery がスタイル情報を見つけられないことを示していますが、接続されている場合は可能です。
jQuery(function($) {
// Disconnected structure
var x = $("<p style='color: red'><span style='padding: 2em'><span style='background-color: white'>TEXT</span></span></p>");
// Get the span
var y = x.find("span span");
// Show its computed color; will be blank
display("y.css('color'): " + y.css('color'));
// Create a hidden div and append the structure
var d = $("<div>");
d.hide();
d.append(x);
d.appendTo(document.body);
// Show the computed color now; show red
display("y.css('color'): " + y.css('color'));
// Detach it again
d.detach();
function display(msg) {
$("<p>").html(String(msg)).appendTo(document.body);
}
});
ライブコピー| ソース
すべての値が正確であることを保証することはできません。実際に試してみてください。ブラウザは、コンテナが表示されるまで/表示されない限り、いくつかの計算を延期する場合があります。必要なプロパティがまだ計算されていないことがわかった場合は、div
表示されているがページ外 ( position: absolute; left: -10000px
) にする必要がある場合があります。