Este tip es muy sencillo realmente, pero señala como cuidar los elementos en una página web cuya CSS es asignada dinámicamente mediante JavaScript, en este caso en especifico jQuery.
Me explico, normalmente esperamos a que la DOM esté completamente cargada para comenzar a modificarla, el problema viene siendo que puede tardar un poco que esto suceda, aun cuando el código es realmente sencillo por lo que se puede notar por un instante los elementos involucrados:
Código :
$(document).ready(function(){ $(objeto).hide(); // $(document).click(function(){ $(this).slideDown("velocidad"); }); });Pongo la siguiente demostración para hacer muestra del código, que aunque no idéntico al anterior hace prácticamente lo mismo. Si no lograste ver el detalle que señalo, refresca la página y notaras el "flash" en el que se logra apreciar el recuadro con texto.
Intentar solucionar el problema desde el archivo CSS no es una opción
La manera más lógica e inmediata para remediar esto seguramente seria modificar directamente el archivo CSS, añadiendo algo como objeto{display:none;} pero habrían conflictos con quienes no tienen JavaScript activado en su navegador, por lo que jamás podrían ver el contenido oculto aun dando click al botón.Lo mejor es identificar el camino correcto, la "Mejora Progresiva"
Quizá la única solución real aquí es no recurrir al uso de CSS puro, o solamente JavaScript sino algo intermedio haciendo un poco de uso de ambas. Esto no deja de recordarme la Mejora progresiva/Progressive Enhancement. Con el siguiente código nos ahorramos el posible lió de que el usuario tenga o no JavaScript activado, así como los detalles por dejarle todo solamente a CSS:Código :
document.write('<style type="text/css" rel="stylesheet">objeto{display:none;}</style>'); $(document).ready(function() { ... });Quizá parezca realmente vil utilizar document.write en estos días modernos con wi-fi gratis y calentamiento global, pero funciona realmente bien. En su defecto podemos violar la ley interna y moral de jQuery y colocar este código fuera de $.ready() :
Código :
$('head').append('<style type="text/css" rel="stylesheet">objeto{display:none}</style>')
Aquí dejo un ejemplo igual a la primera demostración, pero con el código modificado solucionando así el error. Que igual, si tienes una conexión regular llegara a aparecer, pero es mucho menos probable y durara quizá la mitad de tiempo en desaparecer, pruébalo con acciones más grandes y ejemplos reales y notaras dramáticamente el cambio.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por NEO_JP el 04 de Mayo de 2009
Un mejor método de aplicar tu concepto es agregar una clase a la etiqueta body ni bien cargue la página. Ya sea con simple DOM, o jQuery.
Y dejar los estilos en el css. Asi siempre mantienes todo separado, y la velocidad es inmediata.
Un rápido ejemplo seria:
Código :
Un saludo.
Por Alan Cristhian el 17 de Marzo de 2012
No se ven los ejemplos.
Saludos
Por nombre el 15 de Diciembre de 2013
Foros
Blog
Tutoriales
Cursos
Videotutoriales
Comic
Publica un tutorial
¿Qué es Cristalab?
Tags
Ejemplos
Contáctanos
Anime
Buscar ¿Olvidaste tu usuario o clave? Entrar registrate
Nombre de usuario
Email
Contraseña deseada
Aceptas los terminos
Registrate Cerrar
Buscar
Tutoriales Limpiar desperfectos de CSS y JavaScript por demora de carga
Limpiar desperfectos de CSS y JavaScript por demora de carga
Por M@U el 22 de Marzo de 2009 con 6,270 visitas
HTML, CSS y Javascript Otros tutoriales por M@U.
Este tip es muy sencillo realmente, pero señala como cuidar los elementos en una página web cuya CSS es asignada dinámicamente mediante JavaScript, en este caso en especifico jQuery.
Me explico, normalmente esperamos a que la DOM esté completamente cargada para comenzar a modificarla, el problema viene siendo que puede tardar un poco que esto suceda, aun cuando el código es realmente sencillo por lo que se puede notar por un instante los elementos involucrados:
Código :
$(document).ready(function(){
$(objeto).hide();
//
$(document).click(function(){
$(this).slideDown("velocidad");
});
});Pongo la siguiente demostración para hacer muestra del código, que aunque no idéntico al anterior hace prácticamente lo mismo. Si no lograste ver el detalle que señalo, refresca la página y notaras el "flash" en el que se logra apreciar el recuadro con texto.
Intentar solucionar el problema desde el archivo CSS no es una opción
La manera más lógica e inmediata para remediar esto seguramente seria modificar directamente el archivo CSS, añadiendo algo como objeto{display:none;} pero habrían conflictos con quienes no tienen JavaScript activado en su navegador, por lo que jamás podrían ver el contenido oculto aun dando click al botón.
Lo mejor es identificar el camino correcto, la "Mejora Progresiva"
Quizá la única solución real aquí es no recurrir al uso de CSS puro, o solamente JavaScript sino algo intermedio haciendo un poco de uso de ambas. Esto no deja de recordarme la Mejora progresiva/Progressive Enhancement. Con el siguiente código nos ahorramos el posible lió de que el usuario tenga o no JavaScript activado, así como los detalles por dejarle todo solamente a CSS:
Código :
document.write('<style type="text/css" rel="stylesheet">objeto{display:none;}</style>');
$(document).ready(function() { ... });Quizá parezca realmente vil utilizar document.write en estos días modernos con wi-fi gratis y calentamiento global, pero funciona realmente bien. En su defecto podemos violar la ley interna y moral de jQuery y colocar este código fuera de $.ready() :
Código :
$('head').append('<style type="text/css" rel="stylesheet">objeto{display:none}</style>')
Aquí dejo un ejemplo igual a la primera demostración, pero con el código modificado solucionando así el error. Que igual, si tienes una conexión regular llegara a aparecer, pero es mucho menos probable y durara quizá la mitad de tiempo en desaparecer, pruébalo con acciones más grandes y ejemplos reales y notaras dramáticamente el cambio.
Envia un comentario (2)
Popups no intrusivas con javascript, css y xhtml
Mundo 3D dinámico con CSS y Javascript (DOM)
Crear un reloj con Javascript y CSS
Por NEO_JP el 04 de Mayo de 2009
Tamiflú,
Un mejor método de aplicar tu concepto es agregar una clase a la etiqueta body ni bien cargue la página. Ya sea con simple DOM, o jQuery.
Y dejar los estilos en el css. Asi siempre mantienes todo separado, y la velocidad es inmediata.
Un rápido ejemplo seria:
Código :
$(document).ready(function(){
$(document.body).addClass('hasJS');
});
.hasJS #container {
display:none;
}
Un saludo.
Por Alan Cristhian el 17 de Marzo de 2012
Hola.
No se ven los ejemplos.
Saludos
Publica tu comentario
Sé respetuoso. Sé detallado.
No escribas con mayusculas ni como si fuera un SMS.
Insultos, trolls y spammers son siempre eliminados.
negrita
[url=direccion]tu enlace[/url]
Tu nombre:
Tu comentario:
Publicar
o puedes...
¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?
Inicia sesión
¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?
Registrate
Blog Foros Tutoriales Tutoriales de Flash Ejemplos .fla Anime Videotutoriales Cursos Curso de Flash Curso de HTML Tags
Cristalab funciona gracias a Infranetworking