これはおそらく本当に単純な質問ですが、jQueryで要素の正しいオフセットを取得するにはどうすればよいですか?
できます:
$("#whatever").offset().left;
そしてそれは有効です。
しかし、それは次のようです:
$("#whatever").offset().right
は未定義です。
では、jQueryでこれをどのように達成するのでしょうか?
ありがとう!
回答:
$whatever[0].getBoundingClientRect().right
。これは、ウィンドウの左端を基準にしています。
var $whatever = $('#whatever');
var ending_right = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
var rt = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
グレッグが言ったことへの単なる追加:
$( "#whatever")。offset()。left + $( "#whatever")。outerWidth()
このコードは、左側に対して正しい位置を取得します。(CSSright
プロパティを使用する場合のように)右側を基準にして右側の位置を取得することを目的とした場合は、次のようにコードを追加する必要があります。
$( "#parent_container")。innerWidth()-($( "#whatever")。offset()。left + $( "#whatever")。outerWidth())
このコードはright
、CSSで最初にプロパティを設定できないときに、右側を固定アンカーとして設定する必要があるアニメーションで役立ちます。
実際、これらはウィンドウが左上の位置からまったくスクロールされていない場合にのみ機能します。
要素がページ上にとどまるように要素を再配置するのに役立つオフセットを取得するには、ウィンドウのスクロール値を減算する必要があります。
var offset = $('#whatever').offset();
offset.right = ($(window).width() + $(window).scrollLeft()) - (offset.left + $('#whatever').outerWidth(true));
offset.bottom = ($(window).height() + $(window).scrollTop()) - (offset.top + $('#whatever').outerHeight(true));
これをすぐに実現するネイティブDOMAPIがあります— getBoundingClientRect
:
document.querySelector("#whatever").getBoundingClientRect().right
のアンカーポイントを取得するdiv/table (left) = $("#whatever").offset().left;
-OK!
のアンカーポイントを取得するには、div/table (right)
以下のコードを使用できます。
$("#whatever").width();