Hay muchas formas de presentar imágenes para enseñarlas a los usuarios. Una de ellas es el rotador de imágenes. Con HTML, CSS y un poco de JQuery podemos crear una forma de ver nuestras imágenes de forma amena, sencilla y eficaz.
Paso 1. HTML
Como vamos a ver, el rotador se compone de dos estructuras, la zona donde muestra la imagen en sí (izquierda -main image-) y la zona donde se muestran las otras imágenes que podemos ver (derecha -thumbnail list section-. Existe una tercera sección, llamada desc que será la descripción de cada imagen.
Zona main_image HTML
<div class="main_image"> <div class="desc"><a href="#" class="collapse">Cerrar</a><div class="block"> <h2>Título</h2><small>Date</small><p>Copiar</p></div></div> </div> <h3>Zona image_thumb HTML</h3> La zona image_thumb será parecida a la sección principal, solo que en este caso cada imagen estará rodeada por su propio item de lista. <div class="image_thumb"><ul><li> <div class="block"> <h2>Título</h2><small>Fecha</small><p>Copiar</p></div></li></ul> </div>
Paso 2 – CSS
Ahora vamos a personalizar el rotador con CSS:
Zona main_image CSS
.main_image { width: 598px; height: 456px; float: left; background: #333; position: relative; overflow: hidden; color: #fff; } .main_image h2 { font-size: 2em; font-weight: normal; margin: 0 0 5px; padding: 10px; } .main_image p { font-size: 1.2em; line-height: 1.6em; padding: 10px; margin: 0; } .block small { font-size: 1em; padding: 0 0 0 20px; background: url(icon_calendar.gif) no-repeat 0 center; } .main_image .block small {margin-left: 10px;} .main_image .desc{ position: absolute; bottom: 0; left: 0; width: 100%; display: none; } .main_image .block{ width: 100%; background: #111; border-top: 1px solid #000; } .main_image a.collapse { background: url(btn_collapse.gif) no-repeat left top; height: 27px; width: 93px; text-indent: -99999px; position: absolute; top: -27px; right: 20px; } .main_image a.show {background-position: left bottom;}
Zona image_thumb CSS
.image_thumb { float: left; width: 299px; background: #f0f0f0; border-right: 1px solid #fff; border-top: 1px solid #ccc; } .image_thumb img { border: 1px solid #ccc; padding: 5px; background: #fff; float: left; } .image_thumb ul { margin: 0; padding: 0; list-style: none; } .image_thumb ul li{ margin: 0; padding: 12px 10px; background: #f0f0f0 url(nav_a.gif) repeat-x; width: 279px; float: left; border-bottom: 1px solid #ccc; border-top: 1px solid #fff; border-right: 1px solid #ccc; } .image_thumb ul li.hover { background: #ddd; cursor: pointer; } .image_thumb ul li.active { background: #fff; cursor: default; } html .image_thumb ul li h2 { font-size: 1.5em; margin: 5px 0; padding: 0; } .image_thumb ul li .block { float: left; margin-left: 10px; padding: 0; width: 170px; } .image_thumb ul li p{display: none;}/*--Esconde la descripción de la lista de items--*/
Paso 3 – JQuery
Ver descripción de la imagen y establecer opacidad en el bloque
Para desaparecer con opacidad la descripción de una imagen escondida mediante CSS, hay que utilizar este código JQuery:
$(".main_image .desc").show(); //Show Banner $(".main_image .block").animate({ opacity: 0.85 }, 1 ); //Establecer opacidad
Click y Hover para una imagen de la lista
El siguiente código cambia la zona de la imagen principal cuando se haya clickado en un item de la lista de imágenes -image_thumb-. Cada línea de código contiene su explicación sobre que ocurre en cada proceso:
$(".image_thumb ul li:first").addClass('active'); //Añade la clase active $(".image_thumb ul li").click(function(){ //Set Variables var imgAlt = $(this).find('img').attr("alt"); //Obtener tag Alt de la imagen var imgTitle = $(this).find('a').attr("href"); //Obtener la dirección de la imagen principal var imgDesc = $(this).find('.block').html(); //Obtener el HTML del bloque contenedor var imgDescHeight = $(".main_image").find('.block').height(); //Encontrar la altura del bloque if ($(this).is(".active")) { //Si la lista está activa/seleccionada, después... return false; // Previene animaciones repetitivas en la lista de item activo/seleccionado } else { //Si no está activa, después... //Animar la descripción $(".main_image .block").animate({ opacity: 0, marginBottom: -imgDescHeight }, 250 , function() { //Desplaza el bloque hacia abajo(margen negativo del bottom con su propia altura$(".main_image .block").html(imgDesc).animate({ opacity: 0.85,marginBottom: "0" }, 250 ); //Intercambia el html del bloque, después desplaza el contenedor del bloque hacia arriba y le añade opacidad $(".main_image img").attr({ src: imgTitle , alt: imgAlt}); //Cambia de imagen principal (URL + tag alt) }); } //Ver la lista de los items activos $(".image_thumb ul li").removeClass('active'); //Elimina la clase 'active' de todos los items de la lista $(this).addClass('active'); //Añade clase 'active' a la lista seleccionada return false; }) .hover(function(){ //Efecto hover en los items de la lista $(this).addClass('hover'); //Añade la clase 'hover' cuando el cursor se pone encima }, function() { $(this).removeClass('hover'); //Elimina la clase 'hover' cuando el cursor deja de ponerse encima });
En cada click, muestra u oculta la descripción:
$("a.collapse").click(function(){ $(".main_banner .block").slideToggle(); //Activa la descripción (desplazamiento abajo y arriba) $("a.collapse").toggleClass("show"); //Activa el nombre de la clase de 'show' (la pestaña oculta/mostrada) });
Estandarización
CSS 2.1 válido.
XHTML 1.0 Transitional válido.
Ejemplo de su funcionamiento
Finalmente podemos ver un ejemplo de su funcionamiento:
Vía | SohTanaka