Как создать адаптивную галерею изображений с помощью HTML, CSS, jQuery и Bootstrap?

Опубликовано: 6 Января, 2022


С появлением новых фреймворков в веб-технологиях стало довольно легко разрабатывать и реализовывать многофункциональные и адаптивные веб-страницы. Здесь мы собираемся разработать адаптивную галерею изображений с использованием HTML, CSS, jQuery и Bootstrap.

Возможности или функциональные возможности для реализации:

  • Адаптивные изображения
  • Адаптивная сетка
  • Просмотрщик изображений

Предварительные требования: базовые знания HTML , CSS , JavaScript , jQuery и Bootstrap . Также пользователь должен знать, как работает сетка в Bootstrap .

Мы разделим полное решение на три разных раздела, в первом разделе мы создадим структуру галереи. Во втором разделе мы создадим галерею с помощью CSS. И в последнем разделе он будет доступен для ответа на взаимодействия пользователя.

Создание структуры: инициализируйте HTML-макет и адаптивные изображения, но мы будем прикреплять изображения с помощью jQuery в формате массива.

  • 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 >

    Структура проектирования: мы добавим свойства CSS в соответствии с требованиями проекта.

    • Код CSS:
      < style >
      img {
      border-radius: 8px;
      }
      .container-fluid {
      margin-left: 12px;
      margin-right: 12px
      }
      .contain {
      padding-top: 8px;
      padding-bottom: 8px;
      }
      </ style >
    • Код начальной загрузки: мы будем использовать модальную загрузку в качестве средства просмотра изображений и соответствующим образом модифицировать ее в соответствии с нашими требованиями. Все ненужные компоненты модального окна мы сделаем прозрачными. Помните, что мы добавляем изображение в модальное окно, поэтому нам нужно использовать метод on () для добавления функций для таких селекторов.
      < 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 >

    Раздел ответа: в этом разделе мы будем прикреплять все изображения для адаптивной галереи, чтобы они реагировали на пользователя. Ниже приведена сетка, которую мы будем использовать для отображения изображений в галерее изображений. Так как классы использовали col-sm-6 col-md-2 . Логика - это 2 сетки для средних точек останова на экране и 6 сеток для больших точек останова. Они также разделяются дальше, когда контент перекрывается, тем самым представляя собой единую сетку.

    Окончательное решение: это комбинация вышеуказанных трех частей, это полный код адаптивной галереи изображений.

    • Код:
      <!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 >
    • Выход: