jquery/javascriptを介してdiv要素の境界ボックスを計算したい。
私はこのようにしてみました。
_//Left side of box
document.getElementById("myElement").offsetLeft;
//Top side of box
document.getElementById("myElement").offsetTop;
//Right side of box
document.getElementById("myElement").offsetLeft + document.getElementById("myElement").offsetWidth;
//Bottom side of box
document.getElementById("myElement").offsetTop + document.getElementById("myElement").offsetHeight;
_
いくつかの値を返します。 _jquery / javascript
_を介してdiv要素の境界ボックスを取得する正しい方法であるかどうか。
SVG
要素のgetBBox()
メソッドのようなものが必要です。要素のx、y、幅、高さを返します。同様に、div要素の境界ボックスを取得するにはどうすればよいですか。
おかげで、
シヴァ
getBoundingClientRect を呼び出すことにより、任意の要素の境界ボックスを取得できます。
var rect = document.getElementById("myElement").getBoundingClientRect();
それは、左、上、幅、高さのフィールドを持つオブジェクトを返します。
これはjQuery専用にタグ付けされているため-
_$("#myElement")[0].getBoundingClientRect();
_
または
_$("#myElement").get(0).getBoundingClientRect();
_
(これらは機能的には同一であり、一部の古いブラウザでは.get()
はわずかに高速でした)
JQuery呼び出しを介して値を取得しようとすると、css変換値が考慮されないため、予期しない結果が生じる可能性があることに注意してください...
注2:jQuery 3.0では、独自のディメンション呼び出しに適切なgetBoundingClientRect()
呼び出しを使用するように変更されました( jQuery Core 3.0 Upgrade Guide を参照)-つまり、他のjQueryが応答することを意味します最終的には常に正しい状態になります-ただし、新しいjQueryバージョンを使用する場合のみ-したがって、なぜそれが重大な変更と呼ばれるのか...
jQueryを使用:
myelement=$("#myelement")
[myelement.offset().left, myelement.offset().top, myelement.width(), myelement.height()]