2010-06-19 24 views
5

Me encuentro con este problema donde se carga mi página y luego, después de una fracción de segundo, se producen los efectos de CSS o el diseño.CSS surte efecto después de que la página haya procesado

El principal problema que veo es con las lengüetas de JQuery que estoy usando http://docs.jquery.com/UI/Tabs#source

Cuando la página se representa, las pestañas muestran una debajo de la otra por un segundo como esto:

 
One 
Two 
Three 

y luego renderizar correctamente como pestañas

¿Existe una manera rápida y fácil de arreglar esto. Gracias

+0

Por lo general, se trata de una hoja de estilo que se carga demasiado lento o demasiado tarde. ¿Puedes mostrar el encabezado de tu documento HTML? –

Respuesta

9

No es el estilo; es la biblioteca jQuery UI javascript, que agrega el html necesario a tu página para que las pestañas se vean bonitas.

Tiene algunas opciones. En primer lugar, puede ocultar sus pestañas y mostrarlas una vez que jQuery UI haya completado su magia. En segundo lugar, puede diseñar sus pestañas para que se vean lo suficientemente cerca de la salida final para que el cambio no sea tan notable. En tercer lugar, puede eliminar la interfaz de usuario de jQuery y personalizar las pestañas solo con CSS. Todos los enfoques válidos, diría yo.

Espero que esto ayude!

EDIT:

Para la primera opción, digamos que esta es su div que contiene las fichas:

<div id="tabs"> 
    ...stuff... 
</div> 

En su hoja de estilo, oculte #tabs:

#tabs { 
    display:none; 
} 

Entonces, modifique su jQuery UI call como lo siguiente:

var t = $("#tabs"); 

t.tabs({ 
    create:function(){ 
     t.show(); 
    } 
}); 
+0

Gracias ewwwyn - si quiero ir con la primera opción - cómo ocultar las pestañas y cómo sabré que la interfaz de usuario de JQuery ha completado su magia Gracias – Gublooo

+0

agregar 'style =' display: none '' a su conatianer de pestañas. A continuación, utilice jQuery para mostrarlos cuando 'documento listo' – thomasfedb

+0

Sí. Establezca el elemento para mostrar: ninguno inicialmente. Entonces jQuery UI tiene un método llamado "carga", que puede llamar para mostrar su elemento. Editaré mi publicación para explicar ... –

0

¿Se aplica el CSS a través de Javascript? En ese caso, puede agregar un CSS estático que asegure que los elementos se muestren al menos horizontalmente antes de que se ejecute javascript, agregando un CSS estático.

Si es el caso de que el navegador simplemente decida aplicar el CSS después de renderizar sin él, no hay mucho que pueda hacer. Sin embargo, podría ser que el CSS se cargue lentamente (si es un archivo externo), en este caso, podría agregar el estilo más importante a una sección CSS directamente en el HTML.

+0

Gracias que fue información útil – Gublooo

0

Los navegadores generalmente cargan los archivos tal como aparecen en su código HTML. Asegúrese de poner primero la referencia a su archivo CSS para que se cargue lo antes posible.

Si el CSS se aplica con Javascript, no es posible hacerlo cargar más rápido. El archivo Javascript debe cargarse antes de que pueda ser utilizado.

Aparte de eso, no creo que haya una manera de controlar cómo funciona el procesamiento del navegador. respuesta

+0

CSS no es el problema aquí. Es la magia javascript de jQuery UI la que causa el retraso. –

+0

Gracias hombre - lo agradezco – Gublooo

+0

Sí, ewwwyn (eso es un montón de w), parece que el problema es javascript en este caso. También mencioné eso en el segundo párrafo. Tu publicación aborda correctamente ese problema, buena publicación :) No hay problema, Gublooo. – Mathiasdm

2

de weirdlover casi trabajado para mí (con jQuery 1.5.2), pero tenía que enganchar el create evento:

var t = $("#tabs"); 

t.tabs({ 
    create:function(){ 
     t.show(); 
    } 
}); 

Gracias!

Cuestiones relacionadas