Ir directamente al contenido de esta página
En uno de nuestros últimos proyectos decidimos incluir un carrusel de imágenes en la portada del sitio. No obstante, no nos bastaba con aplicar un plugin sin más, puesto que queríamos que el diseño se mantuviese fluido. Modificando ligeramente el código de Easy Slider, conseguimos el resultado que estábamos buscando.
Existen varios plugins que crean la interfaz que hemos indicado sobre jQuery —para el proyecto hemos empleado la versión 1.2.3—, pero elegimos Easy Slider —versión 1.7— de Alen Grakalic, porque es el que nos parece más completo y el que mejor degrada en ausencia de JavaScript. No obstante, al incluirlo en nuestro diseño fluido, nos encontramos con un inconveniente.
Al trabajar en el boceto, creamos una lista con las imágenes que Easy Slider debía animar. En principio el diseño se había concebido para una resolución de 1024×768, lo que nos daba un ancho para cada imagen de unos 700 píxeles. Manteniendo ese tamaño y la resolución, el resultado era el esperado…
…pero al modificar la resolución de pantalla y extenderse la superficie total de la página, los botones de control quedaban descolgados del carrusel:
Éste es el ejemplo, pero para quien no quiera tener que andar cambiando la configuración de su pantalla dejamos una captura a una resolución de 1024×768 (PNG, 256Kb) y otra a 1280×1024 (PNG, 281Kb).
Para convertir el carrusel en un elemento fluido, trasladamos las imágenes —después de haber aumentado su ancho— del código de la página a la hoja de estilo como fondo de cada uno de los li de la lista; así, la caja de los mismos se extendería el ancho total de su elemento padre, y revelaría mayor o menor porción de la imagen de fondo.
Pero no:
¿Qué es lo que ocurre? Easy Slider emplea el ancho de los li para calcular el ancho total del ul padre, que es el que anima. El ancho del ul es el resultado de la suma de los anchos de los li tras haber sido flotados a la izquierda. Al eliminar las imágenes de los elementos de lista y posicionar de manera absoluta los textos que las acompañaban, el ancho de cada li es 0, y por tanto el ancho a animar del ul es igualmente 0. Por ello, el carrusel desaparece.
Aquí es donde se puede distinguir a alguien que se ha preocupado por aprender JavaScript de quien sólo sabe ajustar ejemplos de uso de la documentación de las librerías más populares. Lo único que necesitábamos era que Easy Slider asignara a los li su ancho computado antes de continuar con su funcionamiento normal.
Revisando el código del plugin, nos percatamos de que Grakalic almacena ese valor en la variable w. Gracias a ello, sólo hay que hacer una pequeña modificación en la línea 80 del script…
if(!options.vertical) $("li", obj).css({'float':'left','width':w});
…y listo.
Somos un pequeño estudio fundado en 2007 por tres amigos y que actualmente cuenta con un nutrido grupo de colaboradores, todos ellos profesionales con entre ocho y once años de experiencia en diversos aspectos del desarrollo y la programación web.
Además, Digital Icon, S.L. (N.I.F.: B84622927) es una empresa inscrita en el Registro Mercantil de Madrid, Tomo 22 436, Libro 0, Folio 20, Sección 8, Hoja M-400861, Inscripción 1, conforme a los artículos 18 del Código de Comercio y 6 del Reglamento del Registro Mercantil.
Si quiere conocer un poco mejor cómo trabajamos, puede descargar una copia del contrato que firmamos con nuestros clientes o seguirnos en Google+:
Cliente: La Fábrica
División: MovilizaWeb
Nuestro trabajo: PHP, HTML5, CSS
Cliente: Ana del Val
División: EidoWeb
Nuestro trabajo: PHP, XHTML, CSS, JavaScript
Cliente: Guiomar González
División: EidoWeb
Nuestro trabajo: PHP, HTML5, CSS, jQuery
© Digital Icon, S.L., 2007 – 2012
Comentarios
Muy buen post!!
Imagino que compartiste ese descubrimiento con el autor del EasySlider.
Saludos
Muchas gracias por el comentario.
La verdad es que no lo hemos compartido, porque pensamos que cuando se publica un JavaScript el autor lo ha hecho de la manera que ha considerado más oportuna, y que es trabajo de cada uno adaptarlo a sus necesidades.
Justo ahora, nosotros acabamos de publicar uno, y como decimos al final, el script hace lo que hace. Si alguien necesita algo más, siempre puede modificarlo…
¡¡Pero como diablos se le puede cambiar el tamaño!!
Me ha llegado a desesperar.
En la versión original del plugin, el tamaño de las diapositivas es el ancho de las imágenes que se incluyen en la lista que se va a convertir en el carrusel.
En nuestra versión, el ancho es el valor computado de los
li, por lo que les puedes asignar un tamaño en la CSS, bien especificándolo para esos mismosli, o bien asignándoselo aldivque contiene la lista.Hola, ¿hay alguna forma de descargar el ejemplo de carrusel de imagenes horizontales y el Easy Slider? Gracias.
Puede probar en su navegador Archivo → Guardar como… → Página web, completa.
¿Es posible de alguna manera asignar un tiempo el cual deba mostrarse cada imagen? Entiendo que hay una opcion “pause:” con tiempo en milisegundos, pero es para todas las imágenes el mismo tiempo… ¿Se podrá asignar un tiempo independiente a cada imágen?
No creo… el parámetro pause lo emplea el autor como tiempo de espera para el
setTimeoutcon el que lanza la función que crea la animación.¿Alquien puede decirme cómo asignarle mis propios controles?, osea una lista que haga yo y que al dar clic deslize se contenido…
@jorge: Revisa la documentación del plugin: http://cssglobe.com/post/5780/easy-slider-17-numeric-navigation-jquery-slider.
¿Algún comentario?