$("#canvas").height(100);
次の HTML ファイルは、行がコメント化されているかどうかに応じて、Chrome 特有のものを生成します。
<!DOCTYPE html>
<html>
<body>
<div style="margin-right: auto; margin-left: auto; width: 940px;">
<div><h1>Title</h1></div>
<div style="height: 50px;"></div>
<svg id="canvas" style="width: 100%; position: absolute; left: 0px; z-index: -1;">
<rect id="rect" x="0" y="0" width="100" height="100" fill="none" stroke-width="1" stroke="black"/>
</svg>
<div id="div1">Hi</div>
<div id="div2"></div>
</div>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
function move() {
var left = $("#div1")[0].getBoundingClientRect().left;
$("#div2").text('left = ' + (left - 5));
$("#rect").attr("x", left - 5);
$("#canvas").height(100);
}
move();
$(window).resize(function() {
move();
});
</script>
</body>
</html>
最大化された Chrome ウィンドウにページを読み込むと、解像度に応じて、div のテキストが に変わりますleft = N
。この の値がN
7 ずれていることがわかります。これは、ウィンドウのサイズを変更して最大化しないようにし、再度最大化することで確認できます。
$("#canvas").height(100);
行がコメントアウトされている場合、この奇妙な動作は表示されません。これは、この jsfiddle で確認できます: http://jsfiddle.net/jvPCM/1/。四角形が左端に近づかなくなるまで結果ペインを左に広げてから、更新を押して間違った描画を表示する必要があります。ペインのサイズを再度変更すると修正されます。これがどのように見えるかです:
良い:悪い:
何が原因でしょうか?
参考までに: これは Firefox では表示されません (皮肉なことに、最初に高さを設定する必要がありました)。