¿Cómo crear una galería de imágenes receptiva usando HTML, CSS, jQuery y Bootstrap?


With the advent of new frameworks in web technologies, it has become quite easy to design and implement feature-rich and responsive web pages. Here, we are going to design a responsive image gallery using HTML, CSS, jQuery and Bootstrap.

Características o Funcionalidades a implementar:

  • Imágenes receptivas
  • Sistema de cuadrícula sensible
  • Visor de imágenes

Requisitos previos: conocimiento básico de HTML , CSS , JavaScript , jQuery y Bootstrap . Además, el usuario debe conocer cómo funciona el sistema de cuadrícula en Bootstrap .

Dividiremos la solución completa en tres secciones diferentes en la primera sección crearemos la estructura para la galería. En la segunda sección, diseñaremos la galería usando CSS. Y en el último apartado lo pondrá a disposición para responder a las interacciones del usuario.

Creación de estructura: inicialice el diseño HTML y las imágenes receptivas, pero adjuntaremos las imágenes mediante jQuery, en un formato de array.

  • Código HTML:

    <!DOCTYPE html>
    <html>
    <meta charset="utf-8">
      
    <head>
      
        <link rel="stylesheet" href=
        <script src=
        </script>
        <script src=
        </script>
    </head>
    <body>
        <br>
        <br>
        <center>
            <h1 class="text text-success">GeeksforGeeks</h1>
            <b>Responsive image gallery</b>
        </center>
        <br>
        <br>
        <div class="container-fluid">
            <center>
                <div id=gallery>
                    
                    <!-- Content is appended here -->
                </div>
            </center>
      
            <!-- Modal -->
            <div class="modal fade" id="myModal" role="dialog">
                <div class="modal-dialog">
      
                    <!-- Modal content-->
                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" 
                                    data-dismiss="modal">
                              ×
                            </button>
      
                        </div>
                        <div class="modal-body">
                        </div>
                        <div class="modal-footer">
                               
                        </div>
                    </div>
                </div>
          </div>
      </div>
        
    </body>
      
    </html>
  • Estructura de diseño: agregaremos propiedades CSS según los requisitos del proyecto.

    • Código CSS:

      <style>
          
          img {
              border-radius: 8px;
          }
            
          .container-fluid {
              margin-left: 12px;
              margin-right: 12px
          }
            
          .contain {
              padding-top: 8px;
              padding-bottom: 8px;
          }
      </style>
    • Código de arranque: Usaremos un modal de arranque como visor de imágenes y lo modificaremos de acuerdo con nuestros requisitos. Haremos que todos los componentes innecesarios de modal sean transparentes. Recuerde, estamos agregando la imagen en el modal, por lo que debemos usar el método on() para adjuntar funcionalidades para dichos selectores.

      <style>
          /* For overriding box-shadow and other default
             effects of modal and it's children */
          .modal,
          .modal-content,
          .modal-header,
          .modal-footer {
              background-color: transparent;
              border: 0px;
              color: white;
              
              /* Disable box shadow for different browsers */
              -webkit-box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 1);
              -moz-box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 1);
              box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 1);
          }
            
          .modal-dialog {
              width: 100%;
              height: 50%;
              margin-top: 8px;
          }
            
          .close {
              color: white;
              opacity: 0.8;
          }
            
          .modal-body {
              height: 75%;
          }
      </style>

    Sección Responder: En esta sección adjuntaremos todas las imágenes para la galería responsiva, hazlas responsivas para el usuario. A continuación se muestra la disposición de la cuadrícula que usaremos para mostrar imágenes en la galería de imágenes. Dado que las clases usaron col-sm-6 col-md-2 . La lógica es de 2 cuadrículas para puntos de interrupción de pantalla medianos y de 6 cuadrículas para puntos de interrupción grandes. También se dividen aún más cuando el contenido se superpone, presentándose así como una sola cuadrícula.

    • Código jQuery: a continuación se muestra el script para agregar de esta manera. Supondremos que estamos obteniendo las imágenes del servidor (como una array de URL de imágenes en JavaScript). Ahora agregaremos la imagen en consecuencia en el panel de contenido de nuestra página. A continuación se muestra la implementación para el mismo

      <script>
                      
            // Taking Array of Image Addresses 
            // Suppose it as information from the server
            // Modify this for different address
            a = [
            ];
            var x = 0;
            for (var i = 0; x < a.length; i++) {
                var append = "<div class='row'>";
                for (var j = 0; j < 6 && x < a.length; j++) {
                    append += `
            <div class="contain col-sm-6 col-md-2">
              <img class="img-responsive" src=` + a[x++] + `>
            </div>
            `;
                }
                append += '</div>';
                appender(append);
            }
        
            // Function to append the data
            function appender(x) {
                $('#gallery').html(function(i, original_html) {
                    return (original_html + x);
                });
            }
        
            // For Image Modal
            $(document).on('click', 'img', function() {
                imgAddr = $(this).attr('src');
                data = "<center><img src=" + imgAddr + " width='50%'>";
                $('#myModal').find('.modal-body').html(data);
                $('#myModal').modal();
            });
        </script>

    Solución final: esta es la combinación de las tres secciones anteriores, este es el código completo de la galería de imágenes receptivas.

    • Código:

      <!DOCTYPE html>
      <html>
      <meta charset="utf-8">
        
      <head>
        
          <link rel="stylesheet" href=
          <script src=
          </script>
          <script src=
          </script>
      </head>
      <style>
          
          img {
              border-radius: 8px;
          }
            
          .container-fluid {
              margin-left: 12px;
              margin-right: 12px
          }
            
          .contain {
              padding-top: 8px;
              padding-bottom: 8px;
          }
          
          /* For overriding box-shadow and other default
             effects of modal and it's children */
          .modal,
          .modal-content,
          .modal-header,
          .modal-footer {
              background-color: transparent;
              border: 0px;
              color: white;
              
              /* Disable box shadow for different browsers */
              -webkit-box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 1);
              -moz-box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 1);
              box-shadow: 0px 0px 0px 0px rgba(255, 255, 255, 1);
          }
            
          .modal-dialog {
              width: 100%;
              height: 50%;
              margin-top: 8px;
          }
            
          .close {
              color: white;
              opacity: 0.8;
          }
            
          .modal-body {
              height: 75%;
          }
      </style>
        
      <body>
          <br>
          <br>
          <center>
              <h1 class="text text-success">GeeksforGeeks</h1>
              <b>Responsive image gallery</b>
          </center>
          <br>
          <br>
          <div class="container-fluid">
              <center>
                  <div id=gallery>
                      
                      <!-- Content is appended here -->
                  </div>
              </center>
        
              <!-- Modal -->
              <div class="modal fade" id="myModal" role="dialog">
                  <div class="modal-dialog">
        
                      <!-- Modal content-->
                      <div class="modal-content">
                          <div class="modal-header">
                              <button type="button" class="close" 
                                      data-dismiss="modal">
                                ×
                              </button>
        
                          </div>
                          <div class="modal-body">
                          </div>
                          <div class="modal-footer">
                                 
                          </div>
                      </div>
                  </div>
            </div>
        </div>
        <script>
                      
            // Taking Array of Image Addresses 
            // Suppose it as information from the server
            // Modify this for different address
            a = [
            ];
            var x = 0;
            for (var i = 0; x < a.length; i++) {
                var append = "<div class='row'>";
                for (var j = 0; j < 6 && x < a.length; j++) {
                    append += `
            <div class="contain col-sm-6 col-md-2">
                <img class="img-responsive" src=` + a[x++] + `>
            </div>
            `;
                }
                append += '</div>';
                appender(append);
            }
        
            // Function to append the data
            function appender(x) {
                $('#gallery').html(function(i, original_html) {
                    return (original_html + x);
                });
            }
        
            // For Image Modal
            $(document).on('click', 'img', function() {
                imgAddr = $(this).attr('src');
                data = "<center><img src=" + imgAddr + " width='50%'>";
                $('#myModal').find('.modal-body').html(data);
                $('#myModal').modal();
            });
        </script>
      </body>
        
      </html>
    • Producción:

Publicación traducida automáticamente

Artículo escrito por devproductify y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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