Галерея изображений — это полезный инструмент для упорядоченного отображения коллекции изображений. В этой статье мы рассмотрим, как создать простую галерею изображений с помощью HTML, CSS и JavaScript.

Для начала мы создадим структуру HTML для галереи изображений. Мы будем использовать элемент div для упаковки галереи и серию элементов img для хранения изображений:

<div class="image-gallery">
  <img src="image1.jpg" alt="Image 1">
  <img src="image2.jpg" alt="Image 2">
  <img src="image3.jpg" alt="Image 3">
</div>

Далее мы стилизуем галерею изображений с помощью CSS. Мы добавим элементу .image-gallery отступ и цвет фона:

.image-gallery {
  padding: 20px;
  background-color: #eee;
}

Мы также стилизуем элементы img, чтобы они имели отступы и границу:

.image-gallery img {
  display: block;
  margin: 10px auto;
  width: 50%;
  border: 1px solid #ccc;
}

Теперь, когда у нас есть основные стили, давайте добавим JavaScript для реализации функциональности галереи изображений. Мы будем хранить ссылку на галерею изображений и изображения в переменных:

const gallery = document.querySelector('.image-gallery');
const images = gallery.querySelectorAll('img');

Мы также добавим прослушиватели событий к изображениям для обработки события клика и открытия полноразмерной версии изображения в модальном окне:

images.forEach((image) => {
  image.addEventListener('click', () => {
    const modal = document.createElement('div');
    modal.classList.add('modal');
    modal.innerHTML = `
      <img src="${image.src}" alt="${image.alt}">
      <p>${image.alt}</p>
      <button>Close</button>
    `;
    document.body.appendChild(modal);
  });
});

Мы также добавим немного CSS для стилизации модального окна:

.modal {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.8);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  z-index: 999;
}

.modal img {
  width: 50%;
  margin-bottom: 20px;
}
.modal p {
  color: white;
  margin-bottom: 20px;
}
.modal button {
  background-color: transparent;
  border: none;
  color: white;
  cursor: pointer;
}

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

document.addEventListener('click', (event) => {
  if (event.target.tagName === 'BUTTON') {
    const modal = event.target.parentElement;
    document.body.removeChild(modal);
  }
});

Благодаря этим изменениям наша галерея изображений теперь работает и позволяет пользователям просматривать полноразмерные версии изображений в модальном режиме.