2011-10-18 10 views
5

(para navegadores compatibles con transiciones CSS, incluidas las últimas versiones de Firefox, Safari y Chrome. Extrañamente, este problema no aparece en Opera .)parpadeos de transición CSS con: visitado en Safari, Chrome y Firefox, pero no Opera

¿Alguien más ha notado esto? Cuando coloca una transición de color en un enlace, a: visitó las transiciones al color a: link antes de mostrar el color a: hover. Compruébelo usted mismo:

http://jsfiddle.net/Mgzv9/2/

se puede evitar este parpadeo de color?

+0

Y el último Chrome ni siquiera hace transiciones en los enlaces visitados ... – Zade

Respuesta

0

Nunca lo he visto mientras usaba el color. Pero sí ocurre cuando se utilizan imágenes en formato de bloques. Esto es muy poco del tiempo de carga, y puede evitarse usando todas las imágenes de transición en una imagen grande y usando la propiedad de posición de campo para controlar la imagen.

+0

Ocurre en tres de los últimos navegadores; echa un vistazo al JSFiddle. – Zade

1

Me he estado dando vueltas con este problema por un tiempo.

El problema es que este problema es realmente difícil de reproducir.

OK, entonces, ¿qué sucede, a veces mientras carga/actualiza una página con transición de color en los enlaces, el color primero se pasa del color predeterminado del enlace del navegador al color CSS definido. En realidad, no me sucede cuando abro el HTML desde el disco, pero si lo pongo en un servidor (incluso en el servidor local), aparece este problema.

Para reproducir el problema, cree un archivo HTML, añadir una hoja de estilo y definir una transición para los enlaces, algo como esto:

a { 
    color: red; 
    -webkit-transition: color .5s linear; 
    -moz-transition: color .5s linear; 
    -o-transition: color .5s linear; 
    -ms-transition: color .5s linear; 
    transition: color .5s linear; 
} 

a:hover { 
    color: green; 
} 

... y luego se incluyen la hoja de estilos en el código HTML.

Coloque los archivos en un servidor e intente abrir la página en Chrome, intente actualizar el sitio, a veces primero debe ver una transición desde el color azul predeterminado, cuando se carguen las páginas.

Después de deconstruir algunos sitios, donde no parecía haber ningún problema con esto, se me ocurrió esta solución simple.

Si incluye algunos archivos de Javascript también, entonces simplemente coloque Javascript incluye DESPUÉS de incluye su CSS.

Incluso funciona si solo incluye un archivo JS vacío, después de la hoja de estilos.

Espero que esto ayude!

+2

Qué interesante. No encuentro que su arreglo de Javascript haga la diferencia. Echa un vistazo a soulmastery.net, por ejemplo. Tampoco encuentro ninguna diferencia entre ver archivos locales y archivos de servidor. El problema persiste en Safari 5.1.2 y Firefox 8.0.1 (ejecutando OS X Lion). Afortunadamente, parece que Chrome ha solucionado el problema (en 15.0.874.121). – Zade

+0

El error/función (difícil de decir porque obviamente es el resultado de algún comportamiento intencionado) todavía está presente a partir de Chrome 25 y FF 24, pero la corrección FUNCIONA. Puse mi JS * fuera de la etiqueta *, (y ciertamente debería ponerlo * después del enlace css *) - ¡y funciona! cita: "Cualquier cosa en la cabeza debe completarse antes de cargar el cuerpo, por lo que generalmente es una mala idea poner javascript allí. Si necesita algo mientras el cuerpo se está cargando, o desea acelerar algo de ajax, entonces sería apropiado para ponerlo en la cabeza ". Esto se aplica a, p.wp_head() [WordPress], que debería ir * justo antes de *. – vaxquis

Cuestiones relacionadas