Esta é provavelmente uma pergunta muito simples, mas como faço para obter o deslocamento correto de um elemento no jQuery?
Eu posso fazer:
$("#whatever").offset().left;
e é válido.
Mas parece que:
$("#whatever").offset().right
é indefinido.
Então, como fazer isso no jQuery?
Obrigado!!
$whatever[0].getBoundingClientRect().right
. isso é relativo à borda esquerda da janela.var $whatever = $('#whatever'); var ending_right = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
Referência: .outerWidth ()
fonte
var rt = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
Talvez eu não tenha entendido sua pergunta, mas o deslocamento deve fornecer a você duas variáveis: uma horizontal e uma vertical. Isso define a posição do elemento. Então, o que você está procurando é:
$("#whatever").offset().left
e
$("#whatever").offset().top
Se você precisa saber onde está o limite correto do seu elemento, você deve usar:
$("#whatever").offset().left + $("#whatever").outerWidth()
fonte
Apenas uma adição ao que Greg disse:
Este código obterá a posição certa em relação ao lado esquerdo. Se a intenção era obter a posição lateral certa em relação à direita (como ao usar a
right
propriedade CSS ), uma adição ao código é necessária da seguinte maneira:Este código é útil em animações onde você deve definir o lado direito como uma âncora fixa quando você não pode definir inicialmente a
right
propriedade em CSS.fonte
Na verdade, eles só funcionam quando a janela não é rolada da posição superior esquerda.
Você tem que subtrair os valores de rolagem da janela para obter um deslocamento que seja útil para reposicionar os elementos para que permaneçam na página:
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));
fonte
Existe uma API DOM nativa que consegue isso imediatamente -
getBoundingClientRect
:document.querySelector("#whatever").getBoundingClientRect().right
fonte
Brendon Crawford teve a melhor resposta aqui (em comentário), então vou movê-la para uma resposta até que ele o faça (e talvez expandir um pouco).
var offset = $('#whatever').offset(); offset.right = $(window).width() - (offset.left + $('#whatever').outerWidth(true)); offset.bottom = $(window).height() - (offset.top + $('#whatever').outerHeight(true));
fonte
Obtendo o ponto de ancoragem de um
div/table (left) = $("#whatever").offset().left;
- ok!Obtendo o ponto de ancoragem de um
div/table (right)
você pode usar o código abaixo.$("#whatever").width();
fonte