2011-01-07 12 views
7

La función de desplazamiento jQuerys a veces devuelve números racionales (como 12.645613) para la parte superior o izquierda. Pensé que las posiciones superior e izquierda están en píxeles, por lo que deberían ser enteros (no hay medio píxel, o?).Posiciones de desplazamiento no entero en jQuery

+1

¿De verdad? ¿Puedes mostrar un ejemplo? – SLaks

+0

¿Y qué funciones devuelve ese número? –

+0

Vaya a http://www.dotnetoutsource.com/Download/jQuery_FixedTable/jQuery_FixedTable_Demo.htm y luego '$ (". FixedColumn "). Eq (0) .offset(). Top' resultados en mi Firefox con 182.5833282470703 – Zardoz

Respuesta

5

Las posiciones superior e izquierda pueden ser números en coma flotante con cualquiera de las unidades cm, mm, in, pt, pc, em, ex o px, o porcentajes.

Ejemplo:

.someElement { top: 42%; left: 3.14in; } 

La función offset devuelve la posición traducido en píxeles, por lo que puede muy bien ser un número de coma flotante. Los valores no son redondeados.

Con el ejemplo dado, si la altura del elemento principal sería, por ejemplo, 32 píxeles, el valor top del elemento sería 32 * 0.42 = 13.44 píxeles.

+0

Entonces esto me suena a un error de jQuery en mi caso, ya que la documentación sobre compensación dice: "Obtenga las coordenadas actuales". Lo que describes es más donde debería estar y no donde realmente está actualmente. – Zardoz

+1

@Zardoz: Bueno, eso depende de cómo lo veas. Donde el elemento "es", no es necesariamente donde el navegador elige mostrarlo, es decir, sus coordenadas son coma flotante, pero generalmente se muestra en un píxel par. La mayoría de los navegadores tienen una relación 1: 1 entre sus sistemas de coordenadas y los píxeles de la pantalla, pero el iphone 4, por ejemplo, tiene una relación 1: 2, por lo que podría ubicar los elementos en la mitad de los píxeles. – Guffa

-1

Esta es una vieja pregunta, pero creo que podría publicar una respuesta aquí, para la posteridad.

Estaba teniendo este problema también, y descubrí (gracias Firebug) que el problema radica en que las etiquetas h1 y h3 tienen márgenes de coma flotante (por ejemplo, Firefox por defecto da <H1> un margen de 0.67em 0).

Cuando elimina las etiquetas <H1> y <H3>$(".fixedColumn").eq(0).offset().top devuelve un número entero. Podrías especificar los márgenes para esas etiquetas y el problema debería ser reparado.

Cuestiones relacionadas