Galería y carrousel de imágenes

En este artículo vamos a explicar como crear una galería de imágenes que podría ser interesante incrustar en las fichas de productos de nuestra tienda virtual o en el catálogo de servicios con carrousel de subimágenes.

Tal como se muestra en la imagen anterior, vamos a tener una imagen grande y subimágenes debajo que se iterarán pulsando en las flechas de las bandas mostrándose de entrada 3.

Al hacer click en las flechitas que aparecen en los laterales de las subimágenes itera para ver otras imágenes que también haciendo click se muestran en grande. Podemos tener ilimitadas imágenes.

Para que todo lo mencionado funcione vamos a emplear jQuery, CSS + HTML.

El código HTML que tendremos en el <body> es bastante sencillo:

<div id="content">
    <img id="bigimage" src="gallery/01.jpg"/>
    <div id="carrusel">
        <a href="#"><img src="images/flecha_01.png" /></a>
        <a href="#"><img src="images/flecha_02.png" /></a>
        <div class="carrusel">
            <div id="imagen_0"><img class="img_carrusel" src="gallery/02.jpg" width="195px" height="100px" /></div>
            <div id="imagen_1"><img class="img_carrusel" src="gallery/03.jpg" width="195px" height="100px" /></div>
            <div id="imagen_2"><img class="img_carrusel" src="gallery/04.jpg" width="195px" height="100px" /></div>
            <div id="imagen_3"><img class="img_carrusel" src="gallery/05.jpg" width="195px" height="100px" /></div>
        </div>
    </div>
</div>

Tenemos un contenedor que contiene la imagen grande y debajo un carrousel de subimágenes. En principio hay 4, de las que se mostrarán 3.

El código jQuery que realiza la funcionalidad es lo siguiente:

<script src="../jquery.js" type="text/javascript"></script>
<script>
 var posicion = 0;
 var imagenes = new Array();
 $(document).ready(function() {
   var numeroImatges = 4;
   if(numeroImatges<=3){
       $('.derecha_flecha').css('display','none');
    $('.izquierda_flecha').css('display','none');
   }

     $('.img_carrusel').live('click',function(){
         $('#bigimage').attr('src',$(this).attr('src'));
        return false;
     });

     $('.izquierda_flecha').live('click',function(){
         if(posicion>0){
            posicion = posicion-1;
        }else{
            posicion = numeroImatges-3;
        }
        $(".carrusel").animate({"left": -($('#imagen_'+posicion).position().left)}, 600);
        return false;
     });

     $('.izquierda_flecha').hover(function(){
         $(this).css('opacity','0.5');
     },function(){
         $(this).css('opacity','1');
     });

     $('.derecha_flecha').hover(function(){
         $(this).css('opacity','0.5');
     },function(){
         $(this).css('opacity','1');
     });

     $('.derecha_flecha').live('click',function(){
        if(numeroImatges>posicion+3){
            posicion = posicion+1;
        }else{
            posicion = 0;
        }
        $(".carrusel").animate({"left": -($('#imagen_'+posicion).position().left)}, 600);
        return false;
     });

 });
</script>

Y los estilos son los siguientes:

#carrusel{float:left; width:588px; overflow:hidden; height:100px; position:relative; margin-top:20px;}
#carrusel .izquierda_flecha{position:absolute; left:10px; z-index:1; top:50%; margin-top:-9px;}
#carrusel .derecha_flecha{position:absolute; right:10px; z-index:1; top:50%; margin-top:-9px;}
.carrusel{width:4000px;left:0px; position:absolute; z-index:0}
.carrusel>div{
    float: left;
    height: 100px;
    margin-right: 5px;
    width: 195px;
    text-align:center;
}
.carrusel .img_carrusel{cursor:pointer;}

#content {
    float:left;
    width:600px;
    margin-bottom:40px;
    margin:0px auto;
}

Ver el ejemplo en funcionamiento

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(8 votos, promedio: 5 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

21 respuestas a “Galería y carrousel de imágenes”

  1. Henry dice:

    me trabaja bien y todo pero nos e como hacer para que sea de 5 imágenes en ves de 3, alguien sabe que debo de cambiar?

  2. Rosy dice:

    Hola Jose Aguilar, el ejemplo es justo lo que ando buscando, sin embargo, coloco el codigo tal cual y no se ve como en el ejemplo
    ¿habra que agregar algo?

    • Jose Aguilar dice:

      Hola,

      En breve intentaremos revisar el código presente en el tutorial para ver si se corresponde con el ejemplo. Por ahora puedes revisar el código fuente del ejemplo en funcionamiento para copiar el código.

      Saludos

  3. alejandro dice:

    hola!
    he intentado poner todos los codigos pero no me sale.
    En la página web me pone como tres iconos pequeños y nada mas y era por si me podias ayudar y ponerme directamente todo el codigo para realizar una galeria de imagen html

  4. armando dice:

    pero a la hora de dar una flecha la imagen se recorra y no que tenga que ir seleccionando las imagenes como en ese esta muy bueno ese ejemplo como puedo hacer lo que quiero?

  5. armando dice:

    hola yo tengo un codigo parecido al tu yo pero mi problema es que quiero que la imagen que se ve en los recuadros pequeños se vea en el grande

  6. Luca dice:

    Hola! Al usar el código me da el siguiente error:

    TypeError:$(…).live is not a function a que se puede deber?

    Gracias!

  7. Ana dice:

    Ya lo he solucionado 🙂
    He cambiado la extensión del archivo de jquery: js/jquery.js.php y luego he utilizado código php para poder dar el valor del número de columnas que tiene la tabla de la base de datos a: var numeroImatges.

    Viendo que antes el código no se ha copiado entero, si me dices cómo puedo copiarlo bien lo pongo por si a alguien le puede servir de ayuda 😉

    Muchas gracias!!!

    Ana.

  8. Ana dice:

    Hola!,

    sí, eso ya lo he hecho, pero el id=»imagen_n» que va en el div de cada imagen también tedría que cambiarlo para que el contador del código de jquery haga que las fotos se muevan, (el número de fotos irá variando según se vayan incluyendo más fotos a la base de datos, con lo que no puedo hacer un contador con un número fijo, tiene que ser dinámico), y es lo que no se cómo hacer… 🙁

    Muchísimas gracias de nuevo de antemano y un saludo,

    Ana.

    • Ana dice:

      Perdona, me he explicado mal, tengo todo hecho, lo que no se hacer es cómo pasar al código de jquery el número de fotos que hay en la base de datos (que no es un número fijo…), es decir, qué valor habría que darle a: var numeroImatges

      El resto me funciona a la perfección, por si a alguien le sirviera copio el código:


      <?php
      $i = "-1";
      while($resultado = mysql_fetch_assoc($registro)){
      $i=$i+1;
      echo "»;
      }
      ?>

      // jQuery.noConflict();
      var posicion = 0;
      var imagenes = new Array();
      $(document).ready(function() {
      //alert(jQuery(‘.texto’).html());
      var numeroImatges = 20;
      if(numeroImatges0){
      posicion = posicion-3;
      }else{
      posicion = numeroImatges-3;
      }
      $(«.carrusel»).animate({«left»: -($(‘#imagen_’+posicion).position().left)}, 600);
      return false;
      });

      $(‘.izquierda_flecha’).hover(function(){
      $(this).css(‘opacity’,’0.5′);
      },function(){
      $(this).css(‘opacity’,’1′);
      });

      $(‘.derecha_flecha’).hover(function(){
      $(this).css(‘opacity’,’0.5′);
      },function(){
      $(this).css(‘opacity’,’1′);
      });

      $(‘.derecha_flecha’).live(‘click’,function(){
      if(numeroImatges>posicion+3){
      posicion = posicion+3;
      }else{
      posicion = 0;
      }
      $(«.carrusel»).animate({«left»: -($(‘#imagen_’+posicion).position().left)}, 600);
      return false;
      });

      });

      • Jose Aguilar dice:

        Hola Ana que tal,

        Será muy sencillo, tan solo deberás hacer una consulta que te retorne el número de imágenes que hay en la base de datos y guardarlo en una variable y luego:

        var numeroImatges = ;

        Si así no te funciona deberás buscar como incrustar código php dentro de javascript.

        Saludos,

  9. Ana dice:

    Hola Jose,

    a mí también me ha ayudado mucho éste turorial 😉

    Pero en mi caso lo que quiero es que las fotos las coja de una base de datos de mysql, ¿cómo podría pasar los datos al código jQuery?

    Muchas gracias de antemano y un saludo,

    Ana.

    • Jose Aguilar dice:

      Hola,

      tendrás que conectar a la base de datos y hacer un bucle de los registros o fotos. No hace falta pasar los datos al jquery, solo necesitarás rellenar dinámicamente los src de las imágenes del código html del tutorial

  10. Saul dice:

    Hola Amigo, me sirvio mucho tu Tutorial.

    Una pregunta, como puedo hacer que la flecha se oculte, cuando no queden imagenes, ya sea a la derecha o a la izquierda???

    Y otra, que no se regrese el carrusel de las imagenes pequeñas, cuando finalize en cualquier lado…

    Espero tu ayuda…

    De Antemano, Gracias…

    • Jose Aguilar dice:

      hola

      dentro de la llamada que se hace cuando haces click en una de las flechas:

      $(‘.izquierda_flecha’).live(‘click’,function(){

      deberás añadir algo k controle lo k kieres, en el caso de la flexa izq deberas poner:

      if(posicion==0){
      $(‘.izquierda_flecha’).css(‘display’,’none’);
      o otra opción más elegante para mi gusto;
      $(‘.izquierda_flecha’).hide();
      }

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ver más sobre