3

これらの 2 つの命令で同じレンダリングが生成されないのはなぜですか?

$("#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");

最初のケースでwidthは 500px に等しく、2 番目のケースでwidthは 394px に等しくなります (予想どおり)。

明確にしていただきありがとうございます。

4

1 に答える 1

3

位置が絶対的でない場合、要素は親要素j_idt14\\:panelGrid labelの計算に含まれます。width私の推測では、j_idt14\\:panelGrid label要素は親よりも幅が広いです。

要素の位置が に設定されるabsoluteと、親の境界内に含まれなくなるため、その幅は計算で無視されます。

于 2012-10-27T20:16:32.507 に答える