Según jQuery, esto es porque, como se indica en la página animate
documentación:
Todas las propiedades de animación deben ser un solo valor numérico (excepto como se indica abajo); propiedades que son no numérico no pueden ser animados usando funcionalidad básica jQuery ....
Así que, de hecho, en Firefox que está utilizando un comportamiento indefinido. Lo correcto sería animar en backgroundPositionX, sin embargo, Firefox no es compatible con esto.
Hay, sin embargo, un plugin de jQuery que hace lo que quiere:
http://plugins.jquery.com/project/backgroundPosition-Effect
actualización
En una inspección más cercana, el plugin no soporta +=
o -=
formatos.
Pirateé en este ejemplo:
http://jsfiddle.net/CxqSs/
(Ver nuevo ejemplo en la parte inferior.)
definitivamente podría utilizar algo de limpieza, y probablemente debe añadirse a ese complemento, pero funciona en ambos navegadores y no se basa en un comportamiento indefinido.
Por cierto, no sé si vale la pena señalarlo, pero si deja esta animación en ejecución durante un tiempo prolongado, con el tiempo se desbordará el valor y se romperá. Esto se puede superar animando la longitud total de la imagen de fondo y luego reiniciando el desplazamiento a 0px en la devolución de llamada antes de la próxima animación. Esto también evitaría necesitar el formato +=
.
también,
Cabe señalar que speed: 1, step: 1
y speed: 50, step: 50
son equivalentes.
La razón se ven diferentes velocidades es porque
- Hay más sobrecarga en una velocidad de 1 (que es realmente una duración de milisegundos) debido animado se llama con más frecuencia.
La aceleración predeterminada es "swing", lo que significa que la animación se acelera y desacelera ligeramente a lo largo de su recorrido, lo que significa que la velocidad general se ve afectada un poco. Debe cambiar la flexibilización de "lineal" para su caso de desplazamiento:
var animate = function() {
element.animate({
...
}, speed, "linear", animate);
};
Esto significa que se puede utilizar el plugin backgroundPosition-efecto, sin el '+ =', mediante el establecimiento de su paso a 2247 (el ancho de la imagen), como dije anteriormente.
Y que finalmente nos lleva a ... esperar a que ...
http://jsfiddle.net/zyQj3/20/
entre plataformas, no kludgy, no desbordante, aliviando correctamente, el parámetro-carente adicional, solución.
¿Qué hay de: http: // stackoverflow .com/questions/710756/ie8-var-w-window-open-message-invalid-argument – JakeParis