¿Para qué se necesita precargarlas?
Imaginemos que tenemos un enlace con una imagen de fondo, no hay problema, al cargarse la página, esa imagen se muestra. Tardará más o menos de acuerdo a donde esté alojada, a su tamaño, a nuestra conexión pero, se mostrará. Ahora, queremos que esa imagen cambie cuando se coloca el puntero del ratón encima.
Lo que ocurrirá, entonces, es que esa segunda imagen (que aún no está en nuestra página), deberá ser cargada y por lo tanto, habrá una demora más o menos significativa lo que arruinará el efecto.
Esto, ocurrirá una sola vez ya que una vez cargada, se guardará en la caché del navegador así que la segunda vez que nos movamos, la imagen permutará inmediatamente pero, eventualmente, ni lo veremos, haremos click y estaremos en otro lado.
Entonces, siempre que se usen rollovers, lo ideal es precargar esas imágenes para que estén disponibles y la navegación del sitio sea ágil.
Lo podemos conseguir fácilmente, creando una definición de estilo que colocaremos antes de </head>:
<style type='text/css'>
#preloader {
/* la lista de imágenes a cargar */
background-image: url(URL_imagen_1);
background-image: url(URL_imagen_2);
background-image: url(URL_imagen_3);
/* y ocultaremos todo */
height: 0px;
display: inline;
margin: 0;
padding: 0;
width: 0px;
}
</style>
<div id="preloader"></div>
#unDIV { background: url(URL_imagen_1) no-repeat -9999px -9999px; }
#otroDIV { background: url(URL_imagen_2) no-repeat -9999px -9999px; }
<script type='text/javascript'>
//<![CDATA[
function preloader() {
if (document.getElementById) {
document.getElementById("unDIV").style.background = "url(URL_imagen_1) no-repeat -9999px -9999px";
document.getElementById("otroDIV").style.background = "url(URL_imagen_2) no-repeat -9999px -9999px";
}
}
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) { oldonload(); }
func();
}
}
}
addLoadEvent(preloader);
//]]>
</script>
<script type='text/javascript'>
//<![CDATA[
var images = new Array();
function preload() {
for (i = 0; i < preload.arguments.length; i++) {
images[i] = new Image();
images[i].src = preload.arguments[i];
}
}
preload("URL_imagen_1", "URL_imagen_2",);
//]]>
</script>
0 comentarios:
Publicar un comentario