Reputation:
One div i set the height in css using top:-26px;
. I have other divs other places where i'd like to align with that div. I notice in jquery writing .css('top')
gets me my css and not the y coord of the div. How do i get the absolute x,y position using javascript?
Upvotes: 6
Views: 75902
Reputation: 2614
var MyElement = document.getElementById("...Your_DIV_Control..."); var top = MyElement.getBoundingClientRect().top;
Upvotes: 0
Reputation: 6825
Cross browser safe down to IE 8, possibly even 7 or 6:
function offset(el) {
var rect = el.getBoundingClientRect(),
scrollLeft = window.pageXOffset || document.documentElement.scrollLeft,
scrollTop = window.pageYOffset || document.documentElement.scrollTop;
return { top: rect.top + scrollTop, left: rect.left + scrollLeft }
}
var offsetEl = offset(document.getElementById('some_id'));
console.log(offsetEl.left, offsetEl.top);
Short and fast and no jQuery needed.
Upvotes: 3
Reputation: 1711
Use jQuery(element).offset()
Hope it helps.
For example
var elementPosition = jQuery(element).offset();
var elementTopPositon = elementPosition.top;
Upvotes: 0
Reputation: 17666
I will give you the vanilla solution.. don't complain.. add a [0] to your element and it's fixed! :P hope this helps.
function getOffset( el ) {
var _x = 0;
var _y = 0;
while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) {
_x += el.offsetLeft - el.scrollLeft;
_y += el.offsetTop - el.scrollTop;
el = el.offsetParent;
}
return { top: _y, left: _x };
}
var x = getOffset( document.getElementById('yourElId') ).left;
Upvotes: 17
Reputation: 145398
Try this code:
function getElementPosition(id) {
var offsetTrail = document.getElementById(id);
var offsetLeft = 0;
var offsetTop = 0;
while (offsetTrail) {
offsetLeft += offsetTrail.offsetLeft;
offsetTop += offsetTrail.offsetTop;
offsetTrail = offsetTrail.offsetParent;
}
return {
left: offsetLeft,
top: offsetTop
};
}
It will return an object with left
and top
variables.
If you use JQuery try offset()
method:
var pos = $("#element").offset();
console.log(pos.left)
console.log(pos.top)
Upvotes: 3
Reputation: 6258
With standard JavaScript:
var elem=document.getElementById("elemID");
var top=elem.offsetTop;
var left=elem.offsetLeft;
With jQuery:
var top=$("#elemID").offset().top;
var left=$("#elemID").offset().left;
Upvotes: 0