rotador-imagenes-css-jquery

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.

preview_main

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.

html_preview

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:

preview_main

Ver ejemplo del funcionamiento de Image Rotator

Vía | SohTanaka