2009-03-25 10 views

Respuesta

587

.offset() devolverá el offset de posición de un elemento como un objeto simple, por ejemplo:

var position = $(element).offset(); // position = { left: 42, top: 567 } 

Usted puede utilizar este valor de retorno a la posición de otros elementos en el mismo punto:

$(anotherElement).css(position) 
+77

Siempre me olvido de este, y vuelvo a encontrar su publicación cuando google: p – Aren

+16

Esto no siempre parece devolver la posición absoluta debido a las diferencias en los bordes, etc. – Tom

+7

Estoy usando chrome y el 'offset()' no devuelve la coordenada superior adecuada. Devuelve aproximadamente 300 píxeles más que la coordenada superior del elemento en el documento. ¿¿Por qué?? – SoLoGHoST

170

Nota que $(element).offset() le indica la posición de un elemento relativo al documento. Esto funciona bien en la mayoría de las circunstancias, pero en el caso de position:fixed puede obtener resultados inesperados.

Si el documento es más larga que la ventana gráfica y se ha desplazado verticalmente hacia la parte inferior del documento, a continuación, el valor de su offset()position:fixed del elemento será mayor que el valor esperado por la cantidad que se haya desplazado.

Si usted está buscando un valor relativa al acceso visual (ventana), en lugar del documento en una posición: elemento fijo, puede restar el valor del documento de valor scrollTop() del elemento fijo offset().top. Ejemplo: $("#el").offset().top - $(document).scrollTop()

Si el padre de desplazamiento del elemento de position:fixed es el documento , usted quiere leer parseInt($.css('top')) lugar.

+7

¡Estaba buscando exactamente esto! Para el novato como yo: el valor que se restará es '$ (document) .scrollTop()' –

+2

¡Impresionante! ¡Esta debería ser la mejor respuesta! –

Cuestiones relacionadas