this questionに基づいて、クロスブラウザーのオブジェクトの位置を取得する最も信頼できる方法は何ですか? ThxJS内のオブジェクトの座標の取得
答えて
、あなたがelem
という名前の要素を持っていると仮定すると、それは要素の左上隅のXとY座標を取得するために、実際には非常に簡単です、あなたは文書にこれらをしたいと仮定しを調整します。すべてのブラウザで、これはelem.offsetLeft
とelem.offsetTop
プロパティによって返されます。
elem
が別の要素に絶対配置されている場合、たとえば、の左/上端が20pxの場合、これらのプロパティは現在の値のみを考慮に入れて0を返します要素のチェーン全体ではありません。幸いなことに、特定の要素に関連付けられた要素のマージンをすべて捕捉し、正しい文書座標を取得するためにそれらを集計するために、「チェーントラバーサル」関数を使用することができます。
Sime Vidasが述べたように、JQueryのposition()
とoffset()
プロパティもあります。この場合、offset()
プロパティが必要です。
getBoundingClientRect()
メソッドを使用することもできますが、これは要素の座標をoffsetParent
に対して返します。したがって、完全に信頼できるものではありません。次の例をご覧ください。
// getPosition function
function getPosition(elem){
var dims = {offsetLeft:0, offsetTop:0};
do {
dims.offsetLeft += elem.offsetLeft;
dims.offsetTop += elem.offsetTop;
}
while (elem = elem.offsetParent);
return dims;
}
cont1.style.position = "absolute";
cont1.style.marginLeft = "10px";
cont2.style.position = "absolute";
cont2.style.marginLeft = "10px";
box.style.position = "absolute";
box.style.marginLeft = "10px";
console.log(getPosition(box).offsetLeft); // returns "30"
console.log(getPosition(box).offsetTop); // returns "0"
// or in JQuery
console.log($(box).offset().left) // also returns "30"
console.log($(box).offset().top) // also returns "0"
また、thisとお読みください。
@userこれはすべてのブラウザで動作します。 – dkugappi
jQuery offset()
メソッドを使用して、ドキュメントに対する要素の位置を検索したい場合。
var p = $("p:last");
var offset = p.offset();
p.html("left: " + offset.left + ", top: " + offset.top);
.offset()
参照:あなたがその親に要素の相対的なpoistionを検索したい場合はhttp://api.jquery.com/offset/
その後、jQueryのposition()
メソッドを使用します。
var p = $("p:first");
var position = p.position();
$("p:last").text("left: " + position.left + ", top: " + position.top);
.position()
参照:http://api.jquery.com/position/
そして、これらの方法では、ほとんどのブラウザのほとんどで完璧な結果を与えます。一般的に
element.getBoundingClientRect()
が好きです。それはhas good cross-browser supportです。
var coords = element.getBoundingClientRect();
これは、ビューポートに相対的な座標を示します。文書との相対座標を取得するには、top
とdocument.documentElement.scrollLeft
をleft
に追加します。
coords.top += document.documentElement.scrollTop;
coords.left += document.documentElement.scrollLeft;
しかし、あなたはすでにjQueryのを使用しているので、あなたにもちょうど.offset()
を使用することができます。
- 1. WPFビューモデル内のマウス座標の取得
- 2. recylcerView内のX座標とY座標を取得
- 3. 配列内のオブジェクトのx、y座標を取得する
- 4. スドクブロックの座標の取得
- 5. 他のオブジェクトの座標系でオブジェクトの位置を取得
- 6. ピンチズーム - タッチ座標の取得
- 7. ActionEventの座標を取得
- 8. javascriptを使用して配列内の特定のオブジェクトからx座標とy座標を取得する
- 9. 図形座標でのMatplotlib注釈ラベルの座標の取得
- 10. 親div内にdiv座標を取得
- 11. JScrollPane内でマウス座標を取得
- 12. Flash内のオブジェクトのXY座標をエクスポート
- 13. OpenCV - 輪郭内のオブジェクトの頂点の座標を取得する
- 14. 画面座標でのゲームオブジェクト座標の取得(Unity3D)
- 15. APPIUM、スワイプのx座標とy座標の取得方法
- 16. Angular JS:$ scope内のオブジェクトに関連付けられた要素の座標を取得する方法
- 17. mouseClickのx座標とy座標を取得する方法
- 18. レイトレーシングのピクセル座標からuvw座標を取得する
- 19. JavaFX - ウェブページのオブジェクトの座標を取得する
- 20. Javaでのコンポーネントの座標の取得
- 21. 画像PlaceHoldersの座標の取得
- 22. UIImageViewの座標の取得方法は?
- 23. タッチイベントのタッチスタート座標の取得
- 24. イメージビュー上の座標の取得
- 25. androidのアドレス座標の取得方法
- 26. 要素の座標の取得
- 27. 要素の座標の取得
- 28. Panel内のクリックイベントの座標を取得する方法は?
- 29. サービス内のタッチイベント(座標、モーションイベントなど)の取得
- 30. TextView内のClickableSpanの座標を取得する方法は?
jQueryの 'position()'?これは、DOM要素、 'document'オブジェクト、' window'オブジェクトのために働きます。 –