C'est probablement une question très simple, mais comment puis-je obtenir le décalage droite d'un élément dans jQuery?
Je peux faire:
$("#whatever").offset().left;
et c'est valide.
Mais il semble que:
$("#whatever").offset().right
est indéfini.
Alors, comment peut-on accomplir cela dans jQuery?
Merci!!
Alex, Gary:
Comme demandé, voici mon commentaire posté comme réponse:
var rt = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
Merci de me le faire savoir.
En pseudo-code, exprimable sous la forme:
Le bon décalage est:
La fenêtre largeur MOINS
(L'élément décalage gauche PLUS l'élément largeur extérieure )
var $whatever = $('#whatever');
var ending_right = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
Référence: . OuterWidth ()
Je comprends peut-être mal votre question, mais le décalage est censé vous donner deux variables: une horizontale et une verticale. Ceci définit la position de l'élément. Donc, ce que vous recherchez, c'est:
$("#whatever").offset().left
et
$("#whatever").offset().top
Si vous avez besoin de savoir où se situe la bonne frontière de votre élément, vous devez utiliser:
$("#whatever").offset().left + $("#whatever").outerWidth()
Juste un ajout à ce que Greg a dit:
$ ("# n'importe quoi"). offset (). left + $ ("# n'importe quoi"). outerWidth ()
Ce code aura la bonne position par rapport au côté gauche. Si l'intention était d'obtenir la position du côté droit par rapport au droit (comme lors de l'utilisation de la propriété CSS right
, alors un ajout au code est nécessaire comme suit:
$ ("# parent_container"). innerWidth () - ($ ("# n'importe quoi"). offset (). left + $ ("# n'importe quoi"). outerWidth ())
Ce code est utile dans les animations où vous devez définir le côté droit comme une ancre fixe lorsque vous ne pouvez pas définir initialement la propriété right
en CSS.
Il existe une API DOM native qui permet d’atteindre cet objectif immédiatement - getBoundingClientRect
:
document.querySelector("#whatever").getBoundingClientRect().right
Brendon Crawford avait la meilleure réponse ici (en commentaire), alors je vais le déplacer vers une réponse jusqu'à ce qu'il le fasse (et peut-être développer un peu).
var offset = $('#whatever').offset();
offset.right = $(window).width() - (offset.left + $('#whatever').outerWidth(true));
offset.bottom = $(window).height() - (offset.top + $('#whatever').outerHeight(true));
En réalité, ceux-ci ne fonctionnent que lorsque la fenêtre ne fait pas défiler du tout en haut à gauche.
Vous devez soustraire les valeurs de défilement de la fenêtre pour obtenir un décalage utile pour repositionner les éléments afin qu'ils restent sur la page:
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));
Obtenir le point d'ancrage d'une div/table (left) = $("#whatever").offset().left;
- ok!
Obtenir le point d'ancrage d'une div/table (right)
, vous pouvez utiliser le code ci-dessous.
$("#whatever").width();