
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"> <img src="banner1.jpg" alt="" /> <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>Zona image_thumb HTML
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><a href="banner1.jpg"><img src="banner1_thumb.jpg" alt="Image Name" /></a> <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
Puedes recibir gratis más artículos por RSS, Twitter, Facebook o correo electrónico. ¡Muchas gracias por leerme!







uffff! buenísimo el rotador, pero a ver cómo me va probando el códico :O , las posibilidades para hacer cosas con jQuery parecen infinitas. Gracias.