.offset()

Get the current coordinates of the first element in the set of matched elements, relative to the document. Set the current coordinates of every element in the set of matched elements, relative to the document.

.offset()🡢 Object

The .offset() method allows us to retrieve the current position of an element (specifically its border box, which excludes margins) relative to the document. Contrast this with .position(), which retrieves the current position relative to the offset parent. When positioning a new element on top of an existing one for global manipulation (in particular, for implementing drag-and-drop), .offset() is more useful.

.offset() returns an object containing the properties top and left.

Note: jQuery does not support getting the offset coordinates of hidden elements or accounting for margins set on the <html> document element.

While it is possible to get the coordinates of elements with visibility:hidden set, display:none is excluded from the rendering tree and thus has a position that is undefined.

Access the offset of the second paragraph:

JS
<p>Hello</p>
<p>2nd Paragraph</p>
CSS
p {
  margin-left: 10px;
}
HTML
var p = $("p").last();
var offset = p.offset();
p.html("left: " + offset.left + ", top: " + offset.top);
DEMO

Click to see the offset.

JS
<div id="result">Click an element.</div>
<p>This is the best way to <span>find</span> an offset.</p>
<div class="abs"></div>
CSS
p {
  margin-left: 10px;
  color: blue;
  width: 200px;
  cursor: pointer;
}
span {
  color: red;
  cursor: pointer;
}
div.abs {
  width: 50px;
  height: 50px;
  position: absolute;
  left: 220px;
  top: 35px;
  background-color: green;
  cursor: pointer;
}
HTML
$("*", document.body).click(function (event) {
  var offset = $(this).offset();
  event.stopPropagation();
  $("#result").text(
    this.tagName + " coords ( " + offset.left + ", " + offset.top + " )"
  );
});
DEMO

.offset(coordinates)🡢 jQuery

coordinates PlainObjectAn object containing the properties top and left, which are numbers indicating the new top and left coordinates for the elements.

.offset(function(indexInteger, coordsPlainObject))🡢 PlainObject

function(indexInteger, coordsPlainObject) FunctionA function to return the coordinates to set. Receives the index of the element in the collection as the first argument and the current coordinates as the second argument. The function should return an object with the new top and left properties.

The .offset() setter method allows us to reposition an element. The element's border-box position is specified relative to the document. If the element's position style property is currently static, it will be set to relative to allow for this repositioning.

Set the offset of the second paragraph:

JS
<p>Hello</p>
<p>2nd Paragraph</p>
CSS
p {
  margin-left: 10px;
}
HTML
$("p").last().offset({ top: 10, left: 30 });
DEMO

Looking for a Web Developer?

👋

Hi! I'm Basti, author of this site. If you are looking for a web developer with 15+ years of experience, holla at me!

Be it the good 'ol jQuery, vanilla JS or modern frameworks like Vue and Svelte, front- or backend, I can help you.

Just write me at jobs@jqapi.com :)