Cómo integrar un slider de imágenes flexible en tu web

Categoría: Jquery , 03/10/2011, 35 comentarios

Hace tiempo que llevaba queriendo escribir este post, es bastante simple, y no voy a entrar en demasiado detalle de diseño o de maquetación, simplemente explicaré paso a paso cómo integrar un slider de imágenes en una web. En este caso se trata de FlexSlider, un slider jQuery que se adapta al tamaño del contenedor que lo integra, con lo que junto con un layout responsive conseguiremos una gran flexibilidad.

DEMO DESCARGAR

Breve resumen de los contenidos usados para hacer este manual:

  • HTML/CSS: Layout hecha con 1140px CSS Grid.
  • Slider: FlexSlider, del cual se han usado los ficheros
    • jquery.flexslider-min.js
    • flexslider.css
    • y el directorio theme
  • Imágenes: He cogido unas cuantas imágenes con licencia CC del usuario de Flickr Takedown161.

Antes de cargar el código del plugin, vamos a ver el html necesario para que el slider que vamos a usar funcione:

<div class="flex-container">
	<div class="flexslider">
		<ul class="slides">
			<li><img src="img/img1.jpg"/></li>
			<li><img src="img/img2.jpg"/></li>
			<li><img src="img/img3.jpg"/></li>
			<li><img src="img/img4.jpg"/></li>
			<li><img src="img/img5.jpg"/></li>
		</ul>
	</div>
</div>

El css necesario para que el slider se vea con el estilo por defecto se carga con la siguiente línea:

<link rel="stylesheet" href="css/flexslider.css">

Como para cualquier plugin jQuery que queramos usar en nuestra web, primero tenemos que asegurarnos de que tenemos cargado jQuery antes:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>

Debajo de este código que obtiene el código de los servidores de Google, ya podemos incluir el script del plugin y el código javascript que hará que para el objeto html con clase .flexslider se cargue el plugin correspondiente:

<script type="text/javascript" src="js/jquery.flexslider-min.js"></script>
<script type="text/javascript" charset="utf-8">
  $(window).load(function() {
    $('.flexslider').flexslider({
    	controlsContainer: '.flex-container'
    });
  });
</script>

Y esto es todo, con estas simples líneas tenemos integrado un slider flexible en nuestra web.

DEMO DESCARGAR

  • Pingback: Bitacoras.com

  • Daniel

    Una consulta. para intento agregar este slider pero no tengo resultados, podrias orientarme en como hacerlo?
    he intentado insertar los codigos que pusiste en un html, pero no me funciona, tambien intenté agregar el diseño al index pero solamente se visualiza el slider
    es posible que me ayudes?
    muchas gracias de ante mano
    y se valora el aporte
    saludos

    • http://www.franmoreno.com Fran Moreno

      Hola Daniel, probablemente te falte incluir algún fichero, o puede que copiaras mal algún código, está disponible tu web online para ver el posible error?

      • Pablo

        hola
        por lo visto falta de poner una linea de codigo en los códigos a insertar
        la que hay en el archivo de muestra entre los dos scripts que pones arriba y enlaza con el JS:

        saludos

        • http://www.franmoreno.com Fran Moreno

          Cierto! no me había dado cuenta que faltaba esa línea… ya está añadida en el post.

          Muchas gracias @641ab57409d81844ab9b0db619f57f07:disqus por la respuesta.

  • Lorelay6

    falta esta línea para que funcione, que se te ha olvidado comentar:
     

  • Fugas

    ¿Alguno conoce algún slider con imágenes de las entradas y una pequeña descripción de las mismas?

  • claudia

    ¿podrias decirme como hago para achicar el slider?

    • http://www.franmoreno.com Fran Moreno

      En el fichero css/flexslider.css tienes las clases CSS para modificar la apariencia del slider, puedes modificar la clase flex-container que es el contenedor principal del slider.

  • http://www.facebook.com/sebastianmezu Sebastian Zuluaga Mejia

    busco configurar flexslider para que me cargue diferentes ul en un solo slider, me explico:
    tengo una galeria con varios (proyectos) la idea es que cuando le de click a uno de estos me cargue en un flexslider unico puesto arriba de la galeria. cualquier ayuda con esto sera muy bn recibida.
    muchas gracias de antemano.

    • http://www.franmoreno.com Fran Moreno

      Hola @facebook-702335686:disqus no termino de entender bien lo que necesitas, en la web http://www.woothemes.com/flexslider/ explican cómo configurar varios slides dentro de la misma página, quedaría algo complejo, pero la solución sería tener varios slides y según pulses en uno de los elementos de la galería muestras el slide que te interesa y ocultas el resto de slides.

  • Juan Torres

    Cuando hago click en uno de los botones del control nav el slider ingresa a esa imagen pero para de correr. Hay alguna forma de que sigan avanzando las imagenes ?

    • http://www.franmoreno.com Fran Moreno

      Hola @6cad91ea26842d3badb4daf80900108e:disqus probablemente tengas algún problema al cargar el script, y no está funcionando bien el slider, el efecto normal al pulsar sobre los controles es que avancen entre las imágenes.

      • http://www.facebook.com/martorelljulio Julio Martorell

        yo tengo el mismo problema, y al chequearlo con la demo que hay en la web, veo que pasa lo mismo, cuando cambias la imagen ya sea con las flechas o con los botones de abajo, se queda fija, deja de avanzar.. :S

  • http://www.facebook.com/manuel.nunezcollado Manuel Nunez Collado

    Puedo hacer que las imagenes aparezcan aleatorias?

    • http://www.franmoreno.com Fran Moreno

      Hola @facebook-671182282:disqus , el slider muestra las imágenes en el orden en el que se ha generado el html, es decir, que si quieres que se muestren aleatorias, tendrás que programarlo (PHP por ejemplo)

  • Pedro

    Buenos Días Fran, felicidades por su sitio, le comento que
    llevo días tratando de realizar el efecto que usted enseña y no lo he podido
    lograr, la situación es esta: tengo contratado un hosting, que tiene un
    constructor de sitios (RVsitebuilder), en el proceso de construcción esta la
    opción de introducir código html. (He ingresado algunos y funcionan), sin
    embargo al ingresar los códigos que usted da para integrar un slider de
    imágenes flexible en mi web este no funciona, no se si deba instalar el plugin flexslider
    y de ser afirmativa la respuesta como hago para instalarlo. El hosting tiene una herramienta para
    instalar plugins el softaculous pero no se.
    Por otro lado no se si estoy copiando bien el código. Le estoy dando
    copiar y pegar en el orden que aparecen los cuatro fragmentos de código que
    da. Ayúdeme por favor de antemano
    gracias. Otra cosita al pegar el código
    este me queda alineado hacia la izquierda, no como se ve en su página ¿será por
    eso?

    • http://www.franmoreno.com Fran Moreno

      Hola, siento el retraso en contestar, estaría bien ver el código que estás pegando o la web para buscar si hubiera algún fallo de javascript o falta de algún CSS, que tiene pinta que es el problema que vas a tener.

  • Carolina

    Hola Fran, Cómo estás? Te agradezco enormemente tu ayuda ya que hace tiempo estoy intentando comprender como utilizar este complemento. El único inconveniente que tengo es que al colocar todo, no me aparecer las flehcas de los costados. Qué debería chequear? (el link a la imagen está ok) mucha sgracias!

    • http://www.franmoreno.com Fran Moreno

      Hola @61a3d10e16ad32df176bf1762928a7cb:disqus gracias a ti por visitar la web.

      Puedes explicar con más detalle el problema? No aparecen las flechas pero si se pasan las imágenes correctamente? Tampoco se mueven las imágenes? Has cargado correctamente la librería jQuery?

      Tienes una url donde pueda ver el slider para detectar el posible problema?

      • Carolina

        Hola Fran! Ya logré hacerlo! Era un mínimo error!! Muchisimas gracias por tu ayuda!!

  • camila varguetti

    hola fran me podrias decir en que archivo de css esta la carpeta con la configuracion de los botones next y prev para poder configurar los botones a la medida o si tienes algun consejo , muchas gracias

    • http://www.franmoreno.com Fran Moreno

      Hola @38bd1be69da9932ff6d00488abb9db46:disqus en el archivo flexslider.css está la definición de esos botones, pero puedes sobreescribirlo en tu propio CSS sin necesidad de tocar el que viene por defecto.

  • teresa

    Hola Fran, gracias por tu ejemplo. Tengo un problema a la hora de usarlo. Lo estoy incluyendo en una pagina que tiene ya sus estilos (lo meto a traves de un “include”) y el slider se ve sin problemas pero no funciona lo mas importante: no cambia de tamaño en función de las pantallas. Por que puede ser? Alguna idea?

    • http://www.franmoreno.com Fran Moreno

      Hola @40e9c7d175175b3dd992ce953b0a3b0b:disqus me puedes pasar la url para verlo? tiene pinta de que algunos estilos están sobreescribiendo a los que lleva flexslider y se está cargando esa funcionalidad.

      • teresa

        Gracias Fran por contestar.Al final lo consegui y funciona perfectamente!

  • Caro Zual

    Hola! estoy intentando hacer uno en mi sitio e hice la prueba con tu demo, pero ..mira cómo me sale, sabes dónd esté el error? saludos http://juanjoseossiofotografia.com/prueba.html

    • http://www.franmoreno.com Fran Moreno

      Hola @carozual:disqus no se carga la url que has puesto, no puedo ver el ejemplo.

  • pablo patrol

    Hola y gracias por la ayuda ante todo!
    Queria saber si hay forma de quitar los margenes, es decir, que la imagen ocupe el 100% de la pantalla a lo ancho ..
    Gracias por adelantado!

    • http://www.franmoreno.com Fran Moreno

      Hola @pablopatrol:disqus gracias por escribir.

      Puedes cambiar el CSS del slider, quitarle los márgenes, los bordes, etc… el estilo lo obtiene del fichero flexslider.css

  • Robert

    Hola Muy buen aporte, pero sabrías como poner un png de loading para que quede bien mientra carga imágenes?
    Lo he aplicado en una web con 30 imágenes y el problema es que no se como ponerle el loading mientras carga

    • http://www.franmoreno.com Fran Moreno

      Hola Robert siento el retraso en contestar.

      Una forma de hacerlo sería, por css ocultar inicialmente el slider y mostrar el png que quieras en su lugar. Para mostrar el slider quitando la imagen de carga tendrás que usar el callback “start” que lleva flexslider, que se lanza cuando se lanza el primer slide. Aquí http://www.woothemes.com/flexslider/ en la pestaña advanced puedes encontrar el ejemplo de uso del callback.

  • Goke

    Hola, gracias por el aporte. Mira que el codigo CSS esta todo en horizontal y es horroroso encontrar las cosas, de momento solo he sabido cambiar el color del borde y del fondo, pero sabes como hacer para que el div no se adapte a la imagen sino que tenga una medida establecida? aunque la imagen sea mucho mayor, se reduzca la imagen. Gracias

  • MC

    No sé si puede hacer pero me gustaría integrar en un slider, imágenes con un link (distinto para cada imagen) en una zona determinada de la imagen. Perdón de antemano si esta pregunta no corresponde con ese post.