Code has been added to clipboard!

Manipulate Element Coordinates With the jQuery .offset() Method

Reading time 1 min
Published Jan 19, 2018
Updated Oct 1, 2019

jQuery offset: Main Tips

  • jQuery .offset() returns the coordinates of the first matched element as an object with left and top properties.
  • It cannot be used to get the coordinates of elements that are hidden.
  • offset jQuery method differs from .position() since it returns element position in relation to the document, not the offset parent.

Using .offset() Method

The jQuery .offset() function returns the coordinates of the first detected element relative to the document. It can also set the coordinates of the selected elements as well.

The example below returns the coordinates of the <p> element:

Example
$("button").click(() => {
    var position = $("p").offset();
    alert("X: " + position.top + " Y: " + position.left);
});

To make jQuery get position coordinates, you don't need any arguments:

$(selector).offset();

Use this syntax to make jQuery set position of elements:

$(selector).offset({top:newValue, left:newValue});

You can use a function returning the coordinates to set for the .offset() jQuery method as well.

Note: when placing an HTML element at the top of an existing page for global manipulation, jQuery .offset() is a better choice than .position().

Learn jQuery
Introduction
Selectors
Events
Event Methods
Download
Callback
Chaining
Get and Set
Add Element
Remove Element
Traverse
Parent
Children
Sibling Traverse
Filtering
jQuery AJAX
Effects
Show and Hide
Fade Effect
Slide Effect
Animate Effect
Manipulate CSS
Width and Height
.addClass()
.after()
.animate()
.append()
.appendTo()
.attr()
.before()
.bind() (deprecated)
.blur()
.change()
.click()
.clone()
.css()
.dblclick()
.delay()
.delegate() and .undelegate() (deprecated)
.detach()
.empty()
.end()
.error() (deprecated)
.fadeIn()
.fadeOut()
.fadeTo()
.fadeToggle()
.finish()
.focus()
.focusIn()
.focusOut()
.hasClass()
.height()
.hide()
.hover()
.html()
.innerHeight()
.innerWidth()
.insertAfter()
.insertBefore()
.keypress()
.keyup()
.live() and .die() (deprecated)
.load() (deprecated)
.mousedown()
.mouseenter()
.mouseleave()
.mousemove()
.mouseout()
.mouseover()
.mouseup()
.off()
.offset()
.offsetParent()
.on()
.one()
.outerHeight()
.outerWidth()
.position()
.prepend()
.prependTo()
.prop()
.proxy()
.queue()
.ready()
.remove()
.removeAttr()
.removeClass()
.removeProp()
.replaceAll()
.replaceWith()
.resize()
.scroll()
.scrollLeft()
.scrollTop()
.show()
.slideDown()
.slideToggle()
.slideUp()
.stop()
.submit()
.text()
.toggle()
.toggleClass()
.trigger()
.triggerHandler()
.unbind() (deprecated)
.unload() (deprecated)
.unwrap()
.val()
.width()
.wrap()
Event Properties
event.currentTarget
event.preventDefault()
event.relatedTarget
event.stopImmediatePropagation()
event.stopPropagation()
event.target
event.timeStamp
event.type
event.which
jQuery .find()
jQuery .keydown()
jQuery.noConflict()
pageY and pageX