3

为什么这两条指令不会产生相同的渲染?

$("#j_idt14\\:panelGrid label").css({
    "position": "absolute",
    "width": $("#j_idt14\\:panelGrid label").parent().outerWidth() - 
        parseInt($("#j_idt14\\:panelGrid label").css("padding-left")) - 
        parseInt($("#j_idt14\\:panelGrid label").css("padding-right")) -
        parseInt($("#j_idt14\\:panelGrid label").css("border-left-width")) -
        parseInt($("#j_idt14\\:panelGrid label").css("border-right-width")) -
        24 + "px"
});

$("#j_idt14\\:panelGrid label").css("position", "absolute");
$("#j_idt14\\:panelGrid label").css("width", 
    $("#j_idt14\\:panelGrid label").parent().outerWidth() - 
        parseInt($("#j_idt14\\:panelGrid label").css("padding-left")) - 
        parseInt($("#j_idt14\\:panelGrid label").css("padding-right")) -
        parseInt($("#j_idt14\\:panelGrid label").css("border-left-width")) -
        parseInt($("#j_idt14\\:panelGrid label").css("border-right-width")) -
        24 + "px");

在第一种情况下,等于 500 像素width,在第二种情况下,width等于 394 像素(如预期的那样)。

谢谢你的澄清。

4

1 回答 1

3

当位置不是绝对位置时,该j_idt14\\:panelGrid label元素包含在width父元素的计算中。我的猜测是j_idt14\\:panelGrid label元素比父元素宽。

当元素的位置设置为 时absolute,它的宽度在计算中被忽略,因为它不再包含在父元素的边界内。

于 2012-10-27T20:16:32.507 回答