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

## .offset()Returns: Object

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

- #### version added: 1.2.offset()

  - This method does not accept any arguments.

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.

### Additional Notes:

- The number returned by dimensions-related APIs, including `.offset()`, may be fractional in some cases. Code should not assume it is an integer. Also, dimensions may be incorrect when the page is zoomed by the user; browsers do not expose an API to detect this condition.

## Examples:

Access the offset of the second paragraph:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
    <!doctype html><html lang="en"><head>  <meta charset="utf-8">  <title>offset demo</title>  <style>  p {    margin-left: 10px;  }  </style>  <script src="https://code.jquery.com/jquery-1.10.2.js"></script></head><body> <p>Hello</p><p>2nd Paragraph</p> <script>var p = $( "p:last" );var offset = p.offset();p.html( "left: " + offset.left + ", top: " + offset.top );</script> </body></html>

#### Demo:

Click to see the offset.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
    <!doctype html><html lang="en"><head>  <meta charset="utf-8">  <title>offset demo</title>  <style>  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;  }  </style>  <script src="https://code.jquery.com/jquery-1.10.2.js"></script></head><body> <div id="result">Click an element.</div><p>  This is the best way to <span>find</span> an offset.</p><div class="abs"></div> <script>$( "*", document.body ).click(function( event ) {  var offset = $( this ).offset();  event.stopPropagation();  $( "#result" ).text( this.tagName +    " coords ( " + offset.left + ", " + offset.top + " )" );});</script> </body></html>

#### Demo:

## .offset( coordinates )Returns: jQuery

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

- #### version added: 1.4.offset( coordinates )

  - coordinates
    Type: PlainObject
    An object containing the properties `top` and `left`, which are numbers indicating the new top and left coordinates for the elements.

- #### version added: 1.4.offset( function )

  - function
    Type: Function( Integer index, PlainObject coords ) => PlainObject
    A 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.

## Example:

Set the offset of the second paragraph:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
    <!doctype html><html lang="en"><head>  <meta charset="utf-8">  <title>offset demo</title>  <style>  p {    margin-left: 10px;  }  </style>  <script src="https://code.jquery.com/jquery-1.10.2.js"></script></head><body> <p>Hello</p><p>2nd Paragraph</p> <script>$( "p:last" ).offset({ top: 10, left: 30 });</script> </body></html>

#### Demo: