Metoda offset

Metoda offset pozwala uzyskać pozycję elementu względem dokumentu, w odróżnieniu od metody position, która uzyskuje współrzędne względem marginów rodzica. Metoda offset jest bardziej przydatna przy pozycjonowaniu nowego elementu na istniejącym dla globalnych manipulacji, na przykład do implementacji przeciągania (drag-and-drop). Swoim wynikiem, metoda zwraca obiekt, zawierający właściwości top i left. Błędy w obliczeniach mogą powstawać, jeśli użytkownik zmienia rozmiary strony. Również metoda nie uzyskuje współrzędnych ukrytych elementów.

Składnia

Uzyskać aktualne współrzędne. W niektórych przypadkach uzyskane wartości mogą być ułamkowe:

javascript$(selektor).offset();

Aby zmienić współrzędne elementu, trzeba przekazać obiekt, zawierający właściwości top i left:

javascript$(selektor).offset({top: 40, left: 40});

Również możemy zastosować określoną funkcję do każdego elementu w zestawie. Przy tym pierwszym parametrem funkcja otrzyma numer elementu w zestawie, a drugim parametrem - obiekt ze współrzędnymi top i left. this wewnątrz funkcji będzie wskazywać na aktualny element. Wartości współrzędnych elementu zmienią się na te, które zwróci funkcja:

javascript$(selektor).width(function(numer w zestawie, {aktualne współrzędne}));

Przykład

Uzyskajmy pozycję diva (zielonego kwadratu), za pomocą metody offset, a następnie, odwoławszy się do kluczy uzyskanego obiektu, wypiszmy tę informację:

html<div id="result">kliknij kwadrat ...</div>
<div id="test"></div>
css#test {
  position: absolute;
  top: 40px;
  left: 40px;
  width: 100px;
  height: 100px;
  background: green;
  color: white;
  margin-top: 10px;
  cursor: pointer;
}
javascript$('*', document.body).click(function(event) {
  let offset = $(this).offset();
  
  event.stopPropagation();
  $('#result').text('Left: ' + offset.left + ', Top: ' + offset.top);
});

Przykład

Zmieńmy współrzędne drugiego akapitu:

html<p style="margin-left: 10px;">tekst1</p>
<p style="margin-left: 10px;">tekst2</p>
javascript$('p').last().offset({top: 40, left: 60});

Zobacz też

  • metoda position,
    która pozwala uzyskać aktualne współrzędne elementu
  • metoda offsetParent,
    która pozwala uzyskać najbliższego zpositionowanego przodka elementu
  • metoda css,
    która pozwala uzyskiwać i zmieniać style CSS elementu