Errores Javascript

«Slideshow Barak Obama» con jQuery

Icono de Desarrollo web«Slideshow Barak Obama» con jQuery. Es más o menos conocido ya en la comunidad de desarrolladores web el tema de la web oficial de Barak Obama que, aparte de haber sido descrita como una joya de di[...]

  • 25
  • ago
  • 2008

Publicado por J.A.Cobo. Guardado en Desarrollo web.
hace 1 año y 6 meses No hay comentarios

«Slideshow Barak Obama» con jQuery.

Es más o menos conocido ya en la comunidad de desarrolladores web el tema de la web oficial de Barak Obama que, aparte de haber sido descrita como una joya de diseño, accesibilidad y buen trabajo, usa un elegante «slideshow» de imágenes y noticias… no nuevo pero de un estilo, como digo, muy elegante.

El trabajo en dicha web se basa en «InnerFade» de Medienfreunde Hofmann (http://medienfreunde.com/lab/innerfade/) con «jQuery». Así que yo, siguiendo con mi pasión por jQuery y viendo que ninguno de los scripts me servía del todo o no me agradaba -no quería un timeout o intervalo sino clicks o la opción de ambas cosas-, me he creado el mío propio con el diseño CSS del «BarakSlideshow» -hecho con MooTools- de Guillermo Rauch (http://devthought.com/) y que pienso adaptar para la galería de imágenes de laguardiadejaen.com.

Images Slideshow, código

Así ha quedado lo poco que he hecho hasta ahora, es obvio que no está adaptado a las necesidades de una galería dinámica ni acabado, pero ya estoy viendo lo fácil que va a ser incluir las peticiones… y es que es eso, cada día me gusta más «jQuery»:

Actualización

El código de este slideshow es un boceto y está obsoleto -con sólo un día ggg :D -.
La entrada actualizada es esta:
«Images Slideshow» basado en el slideshow de Barak Obama, con jQuery.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/* Images Slideshow:
 * Copyright 2008 by J.A.Cobo aka Covi for laguardiadejaen.com working on jQuery.
 *
 * Inspired in Barak Obama website slideshow and 
 * adapted from CSS style by Guillermo Rauch (http://devthought.com/). 
 *
 * TODO: Procesar para imágenes (css) u otros recursos.
 * License: GPL, CC-BY
 * ------------------------------------------------------ */
// Div contenedor:
var slideshowContainer = $('div.sld_slideshow');
 
// Si existe al menos uno:
if ( (slideshowContainer.length)>0 ) {
	// CSS para Slideshow:
	var slideshowCSS = '<link rel="stylesheet" type="text/css" href="<?php bloginfo('template_url');?>/css/barackslideshow.css" media="screen" />';
	$(slideshowCSS).appendTo("head");
 
	// Proceso:
	$('ul.sld_menu li').each(function(){
		// Click:
		$(this).children('a').click(function(){
			/* Parámetros internos */
			// Lo más importante, el recurso enlazado:
			var thisHref = $(this).attr('href');
			var thisImg = $('img[src*="'+thisHref+'"]');
 
			/* Proceso real */
			// Efecto carga...
			$('.sld_loading').show();
			// Si el recurso existe, procedemos:
			$.get(thisHref, function(){
				$('.sld_loading').hide();
				$('.sld_content').fadeTo('slow', 0.1, function(){
					$(this).css('background', 'url('+thisHref+')').fadeTo('slow', 1);
				});
			});
 
			$(this).parent().addClass('current').siblings('.current').removeClass('current');
			return false;
		});
	});
}
 
/* End Slideshow
/-------------------------------------------------------- */

Jiji ^^!

Obviamente, sin ver el CSS y el marcado no podemos sacar mucho pero… se puede intuir un poco.
Hay mucha línea, digamos, inútil pues como se indica lo importante es el «proceso real».

Básicamente lo que hacemos es lo siguiente:
Si encontramos el div contendor con la clase sld_slideshow inyectamos el CSS al head del documento, así no usamos ancho innecesario aunque se puede incluir en una hoja de estilo global -yo tengo ya muchas y no es plan ^^-.
Un típico efecto de carga -loading- y cargamos el recurso mediante AJAX en el div de contenido sld_content.
Como digo todo es un boceto por ahora y para ilustrar lo fácil que es casi cualquier cosa con esta librería o «framework» -que se peleen otros en esto :) -.

El menú del listado de imágenes (o secciones), es una lista con la clase sld_menu, cada vínculo enlaza a una imagen real (o recurso), así nos sirve sin JS también (la idea, simple, común, proviene de BarakSlideshow, al César lo que es del César).

Así, capturamos el atributo href de cada item de la lista y con ese simple dato cargamos como fondo ese recurso… que en este caso son imágenes pero podría ser cualquier cosa adaptando el código para inyección HTML $(el).html(código) por ejemplo.

Resumiendo

Se carga como fondo CSS del visor cada recurso que se enlaza desde el menú.

Simple.

Mi trabajo

Mi adaptación, al margen del código con JQuery propio pues partí de 0, es usar un fondo en lugar de incrustar imágenes.

Te ahorras marcado extra (una lista completa de imágenes por un div) aunque quizá sea menos accesible y semántico.
Además, sin JS una lista de imágenes seguiría funcionando mostrando un listado de ellas con un menú que te lleva a ver la imagen, pero si sólo quieres una galería slideshow y que funcione bajo JS, sólo necesitas eso.

Pero como es lógico se puede hacer de ambas formas o incluso de las dos maneras, el caso es que jQuery, nos ayuda muchísimo a ello.

El marcado

Adaptado de «BarakSlideshow» de Guillermo Rauch (http://devthought.com/).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div class="sld_slideshow">    
	<span class="sld_loading">Loading...</span>
 
	<div class="sld_content"></div>
	<!-- Para XHTML1.1, XML de verdad <div class="sld_pictures" /> -->
 
	<ul class="sld_menu">
		<li><a href="images/cities/melbourne.jpg">Melbourne</a></li>
		<li><a href="images/cities/buenos_aires.jpg">Buenos Aires</a></li>
		<li><a href="images/cities/urubamba.jpg">Urubamba</a></li>
		<li><a href="images/cities/london.jpg">London</a></li>
		<li><a href="images/cities/venice.jpg">Venice</a></li>
		<li><a href="images/cities/paris.jpg">Paris</a></li>
		<li><a href="images/cities/osaka.jpg">Osaka</a></li>
	</ul>
</div>

El CSS

Adaptado de «BarakSlideshow» de Guillermo Rauch (http://devthought.com/).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
.sld_slideshow * {margin:0; padding:0;}
.sld_slideshow {
	background:url('../images/barakSlideshow/bg_shadow.gif') no-repeat top;
	position:relative;
	padding:14px 0 15px;
	width:603px;
	height:276px;
}
.sld_slideshow ul {list-style:none !important;}
.sld_slideshow .sld_menu, .sld_slideshow .sld_pictures, .sld_slideshow .sld_loading {
	position:absolute;
}
.sld_slideshow .sld_loading {
	background:url('../images/barakSlideshow/spinner.gif');
	display:block;
	top:158px;
	left:205px;
	text-indent:-5000px;
	width:24px;
	height:24px;
	display:none;
	z-index:5;
}
.sld_slideshow .sld_pictures {
	background:url('../images/barakSlideshow/bg.jpg');
	width:437px;
	height:277px;
	left:0;
	overflow:hidden;
}
.sld_slideshow .sld_menu {
	background:url('../images/barakSlideshow/bg_side.jpg');
	width:166px;
	height:257px;
	right:0;
	padding-top:20px;
}
.sld_slideshow .sld_menu li {
	display:block;
	z-index:1000;
	position:relative;
}
.sld_slideshow .sld_menu li a {
	display:block;
	text-decoration:none;
	padding:0.7em 0 0.7em 2.8em;
	z-index:1000;
	color:#ccc;
	line-height:1.4em;
	vertical-align:middle;
}
.sld_slideshow .sld_menu li a:hover {
	color:#fff;
}
.sld_slideshow .sld_menu li.current a {
	font:15px "Georgia";
	color:#fff;
	padding:5px 0 5px 28px;
	line-height:18px;
}
.sld_slideshow .sld_menu li.background {
	background:url('../images/barakSlideshow/arrow.gif') no-repeat left center !important;
	position:absolute;
	font-size:1px;
	height:7px;
	width:4px;
	z-index:5;
}
 
/* WP */
.postText ul li:before {content:"";}

Eso es todo, ya pondré una demo o ya se verá en la Galería de la web de La Guardia ^^!

Acerca del autor

Avatar del autor J.A.Cobo, «Geek» apasionado por la tecnología, la historia y la aviación con especial interés en el Desarrollo Web basado en estándares, la aplicación semántica de la web y la accesibilidad en la misma. Hubo un tiempo en el que también escribía relatos, principal inspiración para iniciar un «blog».

No hay comentarios.
Trackbacks deshabilitados.
Compartir en:
Menéame
Del.icio.us
Google
Technorati

Aún no hay comentarios.

Dejar un comentario.no seas tímido

Campos personales


¿Qué opinas?

Licencia y acuerdo

Logo Creative Commons Los datos introducidos en este formulario se tratarán, en matería de seguridad, de acuerdo a la normativa española sobre protección de datos ( LOPD ) pese a no estar sujetos a ella. Los contenidos pasarán a ser liberados para Cultura Digital.org bajo las licencias Creative Commons BY-SA y GFDL1.3 como una obra derivada de la que el autor mantendrá el copyright.
Asegúrate de entender estos términos antes de enviar tu comentario.

Artículo 2: Ámbito de aplicación.
[...]
Punto 2. El régimen de protección de los datos de carácter personal que se establece en la presente Ley Orgánica no será de aplicación:
a) A los ficheros mantenidos por personas físicas en el ejercicio de actividades exclusivamente personales o domésticas.
[...]

El autor del blog, Juan Antonio Cobo, se reserva el derecho a decidir sobre la publicación de los comentarios de acuerdo a la lógica común, las buenas maneras y la relevancia de los mismos con la entrada.

Avatar en TwitterJuan Antonio Cobo
JuanAntonioCobo

  • http://blog.culturadigital.org/acerca-de - 19
  • @glinfolaguardia A ver si kedams para actualizar la sección, hay muxo en glinfo.es Ah, y nolvides q la foto del castillo va como CC-BY-SA ;) (vía web).
    - hace 2 horas y 27 minutos
  • @pedrerol El «majo» de Guti será como sea pero dijo la pura verdad y realidad del Madrid. Y no olvides que su pase dio pie a la indv. de CR9 (vía web).
    - hace 2 horas y 30 minutos
  • Confirmado, no recomendaré jamás Telefónica ADSL; más vale malo conocido: ya.com (vía Do).
    - hace 1 día y 7 horas
  • Qué verguenza Telefónica, hacen contratos de 6megas en centrales al 110% de abonados, jopu*** (vía Do).
    - hace 1 día y 7 horas
  • @sirolopez Pellegrini llegará a loq sea, pero da la impresión de no tener alma para el Madrid. Yo dije que Lass&Guti se anulan, dsd Liv'pool (vía web).
    - hace 1 día y 17 horas
  • Guti&Lass nunca,parc mentira@sirolopez "Con Lass Y Diarra le metimos seis al zaragoza".Pellegirni dixit.¡Vale!..por si acaso oy no lo pruebs (vía web).
    - hace 1 día y 22 horas
  • Pero donde vas con Lass y Guti juntos, y con Kaká y dejarte a Van der var, donde vas??! (vía Do).
    - hace 1 día y 22 horas
  • @Buenafuente ¿Un chiste en contra del Barça???, ole ;) (vía web).
    - hace 2 días y 19 horas
  • @sirolopez Vuelve por favor, y trae la cordura a @PuntoPelota jeje (vía web).
    - hace 2 días y 19 horas
  • @PuntoPelota Pero como puede decir Roncero que quiere a Lass y Guti!, es que no se acuerda del Liverpool?? solo falta que pida a Gago! dios (vía web).
    - hace 2 días y 19 horas
  • Por Dios cada día va peor Punto Pelota, que asco y qué poco fútbol se ve ahí. (vía Do).
    - hace 2 días y 20 horas
  • Me cago en el put* calvo de HP, iniciativa ya! ^.^! (vía Do).
    - hace 3 días y 8 horas
  • Test Twitter vía Gnome Do. (vía Do).
    - hace 1 semana
  • Los Óscars; este año se debería hacer justicia de una vez a esos dos grandes: Sandra y Bridges. Viendo: Días de cine. (vía Do).
    - hace 1 semana
  • @ZeroFx Creo que aún sigue caído; al menos tarda un huevo en cargar ;) PD: Twitter tampoco va muy fino que digamos. (vía web).
    - hace 1 mes
  • @glinfolaguardia Pues deberías empezar x restringir el reporte de errores, al menos en producción y solo al admin. Webroot al descubierto ;) (vía web).
    - hace 1 mes y 1 semana
  • d(-_-)b ♬ Our Truth por Lacuna Coil de Karmacode ♬ (vía Do).
    - hace 1 mes y 1 semana
  • Puta casualidad se cuelga ahora precisamente Wikipedia... ¡coño ya! grrr, joder! (vía Do).
    - hace 2 mess
  • I favorited a YouTube video -- Leona Lewis "I See You" video http://youtu.be/O4jYr4502M0?a (vía Google).
    - hace 2 mess

Sígueme en Twitter Sígueme