2012-05-12 20 views
5

Un div establece la altura en css usando top:-26px;. Tengo otros divs en otros lugares donde me gustaría alinearme con ese div. Noto en jquery escribiendo .css('top') me da mi css y no la y coord del div. ¿Cómo obtengo la posición x, y absoluta usando javascript?Obtener la posición div (arriba) en javascript?

+0

por favor escriba su primer div CSS para ayudar a otros a responder. –

Respuesta

11

Puede utilizar jQuery(element).offset().top

espero que ayude.

+2

No se menciona nada acerca de JQuery, y su código debe reescribirse con 'jQuery (element) .offset(). Top'. – VisioN

+2

@VisioN: De qué estás hablando Mencioné jquery. Bueno, tipo de función (.css no es recta js) +0. No funciona y es '.offset(). Top' (tuve que buscar ambas cosas) –

+0

top me pone -18 :(. Necesito la posición absoluta y esta posición es relativa. –

0

Con JavaScript estándar:

var elem=document.getElementById("elemID"); 
var top=elem.offsetTop; 
var left=elem.offsetLeft; 

con jQuery:

var top=$("#elemID").offset().top; 
var left=$("#elemID").offset().left; 
+2

offsetTop devuelve la distancia del elemento actual en relación con la parte superior del nodo offsetParent. No la página. – rlemon

+0

@rlemon corrige así mi problema –

3

probar este código:

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 
    }; 
}​ 

Se devolverá un objeto con left y top variables.

Si utiliza jQuery tratar offset() método:

var pos = $("#element").offset(); 
console.log(pos.left) 
console.log(pos.top) 
+0

mismo problema con los demás. Top me pone -18 :(. Necesito la posición absoluta y esta posición es relativa. –

+1

@ acidzombie24 ¿Estás seguro de que no mezclas posiciones absolutas y relativas? Estas funciones devuelven la posición del elemento relativo a la página. – VisioN

+0

@ VisioN Ya he notado que offsetTop es relativo a él ... espere y tal vez un poco de CSS o HTML aclarará la situación. – rlemon

17

Yo te daré la solución de vainilla .. no se quejan .. añadir a [0] a su elemento y está arreglado! : P espero que esto ayude.

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; 
+0

top me da -18 :(. Necesito la posición absoluta y esta posición es relativa. –

+1

funciona para mí. http://jsfiddle.net/rlemon/m7A6T/ – rlemon

+0

Tal vez puedas intentar mostrarnos tu HTML y CSS ... podría ser un poco más útil. – rlemon

0

Uso de jQuery (elemento) .offset()

espero que ayude.

Por ejemplo

var elementPosition = jQuery(element).offset(); 
var elementTopPositon = elementPosition.top; 
3

entre navegadores segura a Internet Explorer 8, posiblemente incluso 7 o 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); 

corto y rápido y no necesita jQuery.

+0

Simon, donde una función getBoundingClientRect? Copias otro sitio web? wtf lol – KingRider

+0

No tengo idea de cuál es tu problema y no me importa. Aquí hay una referencia para este método: https://developer.mozilla.org/en/docs/Web/API/Element/getBoundingClientRect –

+0

hum .. Mozilla? no sé, tu publicación sobre IE8 ... demasiado confusa ... prueba en http://jsfiddle.net/Darker/sj6tnfce/2/ – KingRider

Cuestiones relacionadas