CSS и вёрстка

Как сделать галерею в html и css

📅 ⏱ 21:11 ⏳ 1 мин 💬 0

Как сделать галерею в html и css: простыми словами, по шагам и с примерами. Разбираем, как это работает на практике, типичные ошибки и лучшие решения. Раскрывае

Коротко: галерею делают сеткой из изображений: контейнеру задают display: grid с repeat(auto-fit, minmax(200px, 1fr)), картинкам — object-fit: cover и aspect-ratio. Эффект при наведении добавляют через transform и transition.

Кому и зачемГалерея нужна портфолио, магазину, фотографу. Аккуратная сетка с одинаковыми карточками и плавным наведением выглядит профессионально и работает на любом экране.

Разметка и сетка

CSS
<div class="gallery">
  <a href="big.jpg"><img src="thumb.jpg" alt=""></a>
  <a href="big2.jpg"><img src="thumb2.jpg" alt=""></a>
</div>

.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 12px;
}

Сетка сама подбирает число колонок под ширину экрана — медиазапросы не нужны.

Вкладки: оформление



CSS
.gallery img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  display: block;
  border-radius: 10px;
}

Одинаковые пропорции и object-fit: cover дают ровную сетку, даже если исходные фото разного размера.

CSS
.gallery a { overflow: hidden; border-radius: 10px; }
.gallery img { transition: transform .3s; }
.gallery a:hover img { transform: scale(1.05); }

Плавное увеличение при наведении оживляет галерею. Обрезку обеспечивает overflow: hidden у ссылки-обёртки.

CSS
.gallery {
  column-count: 3;
  column-gap: 12px;
}
.gallery img { margin-bottom: 12px; }

Для картинок разной высоты удобна «кладка» на колонках. На мобильном число колонок уменьшают.

ПроизводительностьНе грузите в галерею полноразмерные фото. Делайте уменьшенные версии, а большие открывайте по клику. Добавьте loading="lazy", чтобы картинки грузились по мере прокрутки.

Практика: собрать галерею

  1. Разместите изображения в контейнере.
  2. Задайте сетку через grid.
  3. Установите одинаковые пропорции и object-fit.
  4. Скруглите углы и добавьте отступы.
  5. Настройте эффект при наведении.
  6. Включите ленивую загрузку и проверьте на мобильном.

Частые ошибки: причина → решение

Симптом Причина Решение
Картинки разной высоты нет aspect-ratio задать пропорции
Фото искажены нет object-fit cover
Увеличение выходит за карточку нет overflow: hidden добавить обёртке
Галерея тормозит большие файлы сжать и включить lazy
Прыгает сетка при загрузке нет размеров задать aspect-ratio

Проверьте себя

Чек-лист




Какое свойство не даёт искажать фото в галерее?




Как сделать сетку одинаковых карточек?




Вопросы и ответы

Потому что заданы и ширина, и высота без object-fit. Добавьте object-fit: cover — изображение заполнит рамку с обрезкой без искажений.

Ссылку-обёртку ведут на большую картинку: браузер откроет её поверх страницы. Полноценный лайтбокс с навигацией делают на JavaScript или готовой библиотекой.

С auto-fit и minmax обычно нет: сетка сама перестраивается. Медиазапрос понадобится, если хотите принудительно менять число колонок.

Сжать изображения, использовать уменьшенные версии, включить loading="lazy" и современные форматы вроде WebP. Большие файлы — главная причина медленной галереи.

Итоги

  • Галерею собирают сеткой на grid.
  • Одинаковые пропорции и object-fit дают ровный вид.
  • Эффект при наведении делают через transform.
  • Для картинок важна оптимизация и ленивая загрузка.
Поделиться: ВКонтакте Telegram WhatsApp Одноклассники Viber Мой Мир

Комментарии

Пока комментариев нет — будьте первым, кто поделится мнением.

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получите консультацию нашего маркетолога

Изучит ваш проект, подберет подходящие услуги и тарифы

Получите бесплатный аудит

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

Закажите услугу Каталог морепродуктов

Наш специалист свяжется с вами в ближайшее время и уточнит детали

Закажите адаптивный сайт

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

Закажите сайт

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

Закажите сайт лендинг

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

Закажите сайт каталог

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

Закажите интернет-магазин

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

Закажите веб-приложение

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

Закажите тариф Аутсорс

Стоимость от 150 000 ₽

Закажите тариф Магазин

Стоимость 90 000 ₽

Закажите тариф Классический

Стоимость 60 000 ₽

Закажите тариф Эконом

Стоимость 40 000 ₽

Закажите SEO продвижение

Наш специалист свяжется с вами, проведет анализ, предложит стоимость