2011-01-10 9 views
11

Mientras trabajaba en un control deslizante de rango jQuery UI, principalmente estaba depurando en chrome. Necesitaba hacer la gama tiene un límite, así que agarra la posición izquierda de uno de los controladores, así:jQuery diferencias de posicionamiento entre Chrome (webkit) y Firefox

$el.css('left');

Lo que me daría la posición izquierda como un porcentaje: 84%. Sin embargo, cuando probé en Firefox, devolvía el valor en píxeles.

¿Alguien ha experimentado esto antes? Basado en mirar el DOM en Firebug, Firefox reconoce el posicionamiento izquierdo basado en porcentajes, pero no parece devolver eso como un valor. ¿Es este comportamiento predeterminado para Firefox? ¿Es esto lo mismo en IE también?

+0

Buena pregunta. Me sorprendió recientemente encontrar css ('izquierda') píxeles de retorno en Firefox cuando la propiedad se especificó como un porcentaje (o ems). Después de todo, siempre puedes obtener el valor de píxel con la posición() izquierda. Aunque no lo he comprobado en Chrome. – harpo

+0

Ya, me sorprendí cuando uno de los elementos salió disparado de la pantalla cuando pensé que básicamente había terminado con esa funcionalidad. Trabajando en un MBP sin VMWare o similar, por lo que realmente no puedo probar IE ahora. – hellatan

+0

Esto no responde a su pregunta, pero una solución alternativa basada en jQuery es usar 'position' (http://api.jquery.com/position/), que devuelve el mismo valor (en píxeles) en cada navegador. – Emmett

Respuesta

0

No creo que haya diferencias conocidas para el posicionamiento con jQuery a partir de la última versión 1.4.4.

1

La función css() devuelve el valor de la propiedad CSS especificada según lo informado por el navegador. Como resultado, es específico del navegador y no debe usarse cuando se trata de longitudes y posicionamiento de esta manera.

+0

Acepto, la función css() le permite manipular o leer las propiedades de CSS y esas (tristemente) se interpretan de manera diferente por navegador. Use la función de posición() si quiere cifras y resultados independientes del navegador. – Ivanhoe

0

uso $el.position().left; lugar :)

+0

Eso puede devolver el mismo resultado si no tienes suerte. (en este momento para mí) – Sascha

0

trabajé evitar este problema mediante el acceso a DOM directamente como aquí:

$el.get(0).style.left

devuelve el valor% para FF, Chrome, Safari e IE9. (No lo probé en Opera, sin embargo)

Cuestiones relacionadas