要素の配置に問題があります。さらにsvgパス要素を含むdiv要素があります。マークアップは次のようなものです:
<div style="position:absolute;" class="svg">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<path id="path203" d="M150 0 L75 200 L225 200 Z" />
</svg>
</div>
ユーザーがパスにマウスオーバーしたときに、パス要素の周りに境界線を設定したい。このためには、パス要素の高さと重みにアクセスし、それらの値を親の div 要素の高さと幅として設定する必要があります。このために、getBoundingClientRect() を使用しました。コード :
var box = document.getElementById("path203").getBoundingClientRect();
$("#path203").parents("div.svg").css({ width: box.width + "px", height: box.height + "px" });
ここで私の問題はこれで完全には解決されませんが、境界線のみを取得しますが、div の位置とその子パス要素は同じではなく、両方とも異なるオフセット値を持っています。したがって、このために、親divの上部と左側も設定します:
var box = document.getElementById("path203").getBoundingClientRect();
$("#path203").parents("div.svg").offset({ left: box.left + "px", top: box.top });
これで div は正しい位置になりましたが、その子パス要素はその位置から離れて移動します。その理由は、path 要素が div 要素の子であるためです。したがって、 div を移動すると、そのすべての子要素も同時に移動します。子要素のオフセットを変更せずに、親の div オフセット値を変更するにはどうすればよいですか?