我能想到的最简单的事情是将整个内容包装在您设置display: none
的容器中,并将其附加到 DOM。浏览器不会呈现它,但您将能够查询计算的样式。
下面是一个例子,展示了当结构没有连接到 DOM 时,jQuery 如何找不到样式信息,但是当它连接到 DOM 时,它可以:
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
);