2010-01-19 16 views
5

EL EJEMPLO
En primer lugar, aquí está mi código y problema (bug o mi mal?):
http://www.nathanstpierre.com/MBX/showoff.htmljQuery aliviar la animación de desplazamiento ventana en Firefox

EL PROBLEMA
Así que lo que Estoy viendo que cuando haces clic en los botones de la izquierda, la ventana se desplaza al título apropiado. En todos los navegadores excepto Firefox (incluido ... IE gasp), esto es muy sencillo. Sin embargo, si reduce la altura de la ventana, se vuelve uniforme en todas las computadoras. Ya he probado esto en varias computadoras y en IE 7-8, Google Chrome, Safari y Firefox 3.5. Eliminé todo el gráfico y el color de la página, así que esos no son el problema. Me he deshecho de la barra lateral que te sigue, eso no es todo.

LA TEORÍA
creo que el plugin de jQuery aliviar calcula la distancia a la que está necesitando ir y, a continuación, divide el número de píxeles que necesita moverse por unidad de tiempo determinado (digamos más de 300 píxeles 30 milisegundos, entonces 10px/ms). Todos los demás navegadores parecen ser capaces de hacer de esto una transición fluida, pero tal vez la granularidad proporcionada por el evento de desplazamiento de la ventana no está lo suficientemente comprimida como para que Firefox lo haga parecer liso. O tal vez estoy usando el plugin easing incorrecto, o la configuración incorrecta.

CÓDIGO

$("#sidenav a").click(function() { 
     $("#sidenav a").animate({'color':'#6d6d6d'},{"duration":400}); 
     $(this).animate({"color":"#fff"},{"duration":400}); 
     clicktarget=$(this).attr("href"); 
     $("html, body").animate({scrollTop: $(clicktarget).offset().top},{"duration":300,"easing":"easeout"}); 
     return false; 
     }); 

LA LÓGICA

Añadir un detector de eventos a cada una etiqueta en la sidenav onClick. Esto obtendrá el desplazamiento(), la parte superior del elemento en el documento con el mismo ID que el atributo href de ese enlace, y luego animará desde el scrollTop actual hasta el desplazamiento(), parte superior de ese elemento. La lógica es sólida y funciona sin problemas en todos los navegadores, EXCEPTO Firefox ... hasta donde yo sé.

Sobre el motivo

¿Qué estoy haciendo mal? ¿Es esto un error?

Gracias!

LA ACTUALIZACIÓN

Bueno, no puedo en buena conciencia elegir cualquiera de las respuestas que aquí se presentan, ya que ninguno de ellos realmente han dado una solución al problema, por lo que si usted está siguiendo este recoger su favorito y la recompensa irá a la que tenga los votos más altos.

El problema parece ser la forma en que Firefox a) proporciona transparencia yb) se ocupa de los eventos de desplazamiento. Potencialmente, con suficiente potencia de procesador, esto no es un problema, pero lo que me entristece es que IE (de todos los navegadores) es capaz de reproducir bien en un hardware inferior. Me acercaré a Mozilla con el problema y veré si tienen algo que decir al respecto.

para edificación adicional, se proporcionan los siguientes sin cargo:

With Transparency
Without Transparency

EDIT: Entonces, la pregunta ha sido contestada, pero ahora no puede elegirlo. Alguien sabe qué pasa con eso?

INFORME FINAL DE ACTUALIZACIÓN Había pasado tiempo suficiente que me dejaron tener la generosidad hacia atrás, por lo que optó por la respuesta que era correcto. Parece que la sombra de la caja y algunos otros efectos causan algunos problemas de desplazamiento en Firefox debido a la forma en que se representan. FF 4.0 + maneja esto mejor, pero algunas computadoras todavía tienen problemas. Este es un gran aviso para las personas que implementan CSS3: pruebe la interacción en todos los navegadores y vea si los costos de rendimiento son justificables.

+0

funciona bien en Firefox 3.6 RC2 Mac OS X –

+0

@Paolo: Hmm tal vez se fijó en 3,6, voy a comprobar que el próximo. Gracias por el aviso. – NateDSaint

+0

@Paolo: No, parece que sigue siendo un problema. Para ver un ejemplo de lo que quiero decir, reduzca la ventana a unos 400 píxeles de alto, y luego presione los botones para ver una comparación. En realidad, no es gran cosa, pero soy quisquilloso y creo que he descubierto un error potencial con la forma en que jquery se anima o la forma en que Firefox entiende esa animación. – NateDSaint

Respuesta

4

El bajo rendimiento parece ser causado por la propiedad -moz-box-shadow, si elimina cualquier declaración de esta propiedad (o la desactiva con Firebug), la animación de desplazamiento es mucho más fluida.

+0

esto lo arregló! Aunque ahora parece que tengo otro problema, no me permitirá seleccionar esto como la respuesta. – NateDSaint

+0

Parece que respondió esto justo después de que expiró la recompensa, así que no puedo elegirlo. : (Pero esta es la respuesta correcta, por lo que si alguien llega al mismo problema, esta es la resolución a partir de ahora. Mozilla es consciente de que su implementación de box-shadow es una fuente de recursos y está trabajando para optimizarlo. – NateDSaint

+0

Parece cambiaron las reglas, así que pude aceptar esta respuesta. ¡Huzzah! – NateDSaint

1

página que es un poco pesado con los dos fondos (siendo uno un png transparente ..)

El problema es con Firefox y/o máquina de manipulación de la animación. Compruebe la opción de desplazamiento suave de Firefox (Herramientas -> Opciones -> Avanzado -> General -> Usar desplazamiento suave). Podría ser el motivo si está marcado ...

+0

1) Me doy cuenta de que los fondos no están optimizados, pero los he desactivado y el problema persiste. Puedo proporcionar un ejemplo si es necesario. 2) Lo he encendido, y todavía lo estoy haciendo. ¿No ves la diferencia de animación entre Firefox y otros navegadores en tu computadora? Intente cargarlo en otro navegador (IE, Chrome, Safari) y vea la diferencia. – NateDSaint

+0

Puedo ver la diferencia ... pero mi Firefox es muy pesado de todos modos ... así que creo que es algo de Firefox ... no algo que hagas ... ¿Has probado la opción de desplazamiento suave de Firefox? –

+0

Sí, también puede obtenerlo yendo a about: config y luego buscar smoothscroll en el filtro y verificarlo allí. Al principio pensé que era un problema de optimización, pero abrí el sitio en una netbook (alimentado por átomo, ejecutando ubuntu netbook remix), y Chrome no tiene caída en el framerate, aunque esto no tiene más que un gig de ram y un slow procesador. Sin embargo, lo cargas en FF y hay algunos saltos, pero cambias el tamaño de la ventana y no está tan mal. No puedo averiguar si es algo matemático con Firefox o simplemente que la forma en que se desplaza Firefox es un poco más intensa – NateDSaint

0

cada vez que intento un efecto similar, he utilizado ScrollTo. tal vez eso le ayudará

ScrollTo Plugin

+0

He intentado usar esto también, y parece que podría ser mejor para elegir un apropiado aliviando, pero el problema con Firefox parece estar presente ya que usa la misma funcionalidad básica de JS. – NateDSaint

2

Inténtelo jQuery 1.4. Eso parece ser mucho más rápido, luego jQuery 1.3.2.

Si necesita depurar este tipo de cosas, coloque los archivos js sin comprimir en su código y use Firebug con su perfil, para perfilar las funciones.

+0

Esos son todos los puntos impresionantes, y seguí suponiendo que era Firefox, pero al menos puedo tratar de optimizar todo para ver si puedo minimizar la sacudida del marco. ¡Gracias por el aviso! – NateDSaint

0

He tenido el mismo problema con FF 3.5: definitivamente parece un problema de renderizado. Si lo prueba con la versión 3.6, probablemente esté bien.

Estaba teniendo problemas con el control deslizante coda de la doherty 2.0 por cierto.

Saludos

Andrej

Cuestiones relacionadas