Вертикальное выравнивание изображения в div: CSS решение
Быстрый ответ
Чтобы вертикально центрировать изображение в элементе div при помощи flexbox, вам нужно задать контейнеру свойства display: flex; и align-items: center;. Благодаря этому, содержимое будет центрироваться по вертикали и грамотно адаптироваться к изменению высоты.
.container {
  display: flex;
  align-items: center;
}
<div class="container">
  <img src="your-image.jpg" alt="Центрированное изображение"/>
</div>
Flexbox порадует вас своей универсальностью. Продолжайте чтение, чтобы открыть для себя дополнительные приемы центрирования!

Механика вертикального выравнивания
Вертикальное выравнивание элементов — это одна из стандартных задач в CSS. Давайте рассмотрим основные методы, которые сделают этот процесс столь же приятным, как и прогулка по парку.
Метод 1: Выравнивание при помощи inline-block и псевдоэлемента
Создайте псевдоэлемент, установите его как display: inline-block; и присвойте vertical-align: middle;, чтобы изображение было центрировано как по вертикали, так и горизонтали.
.container::before {
  content: '';
  display: inline-block;
  vertical-align: middle;
}
Метод 2: Сохранение соотношения сторон с помощью padding
Используйте padding-top или padding-bottom, задавая эти значения в процентах, для получения требуемого соотношения сторон.
.container {
  height: 0;
  padding-bottom: 56.25%;
}
Метод 3: Точное центрирование с использованием position и transform
Примените комбинацию свойств position: absolute; и transform: translate для точного и правильного размещения изображения.
.image {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
Продвинутые техники
Для повышения мастерства работы с CSS воспользуйтесь следующими продвинутыми методиками.
Техника 1: Использование display table для ностальгирования
Для тех, кто скучает по временам, предшествующим появлению flexbox, можно предложить display-модель table
.container {
  display: table;
  width: 100%;
}
.container img {
  display: table-cell;
  vertical-align: middle;
}
Техника 2: Кроссбраузерное вертикальное выравнивание при использовании flexbox и max-height
Для достижения стабильного выравнивания в различных браузерах можно применить сочетание flexbox с max-height:
img {
  max-height: 100%;
  max-width: 100%;
  object-fit: contain;
}
Техника 3: Сохранение соотношения сторон изображений
Для того чтобы при масштабировании изображения сохраняли свое соотношение сторон, используйте следующие свойства:
.aspect-ratio {
  position: relative;
  width: 100%;
  padding-top: 56.25%;
}
.aspect-ratio img {
  position: absolute;
  width: 100%;
  height: 100%;
}
Визуализация
Представим элемент div как основание, а изображение – как растение. Вне зависимости от изменения размеров растения (изображения), оно всегда остается на своем месте, стабильно центрировано на основании (div):
Основание (div): <div style="height: 100%;">
  Растение (изображение): <img src="tree.jpg" alt="Дерево" style="max-height: 100%; margin: auto;">
</div>
И ваше растение всегда будет устойчиво к любым ураганам изменений! 🌳
Тонкая настройка
Хотите довести свой дизайн до идеала? Обратите внимание на следующие детали:
Совет 1: Удаление пробелов во встроенных элементах
Избавьтесь от пробелов, сделав размер шрифта в контейнере равным нулю.
.container {
  font-size: 0;
}
.container img {
  font-size: initial;
}
Совет 2: Центрирование изображений различного размера
Центрируйте изображения с различными размерами, используя свойства с процентными значениями или transform.
img.small {
  margin-top: calc(50% – 10em);
}
img.large {
  transform: translateY(-50%);
}
Совет 3: Ограничивайте размеры изображений внутри контейнера
Заботьтесь о том, чтобы изображения не выходили за пределы своего контейнера, используя max-height и max-width.
.image-contained {
  max-height: 100%;
  max-width: 100%;
}
Шаблоны и полезные ресурсы
Когда создается ощущение, что нас программирует не только логика, но и вдохновение:
- Flexbox шаблон: JsFiddle Пример с использованием Flexbox
 - Блоки с сохранением пропорций: CSS-Tricks Аспектные блоки
 - Примеры вертикального выравнивания: JsBin Примеры вертикального выравнивания
 
Мир создания сайтов полон неограниченных возможностей, главное — уметь их использовать!
Полезные материалы
- Полное руководство по Flexbox на CSS-Tricks – Подробное описание возможностей flexbox.
 - Основы flexbox на MDN – Основы работы с flexbox на портале MDN.
 - Центрирование изображений на W3Schools – Простой урок о центрировании изображений.
 - Создание отзывчивого дизайна на Smashing Magazine – Глубокий анализ стратегий адаптивного веб-дизайна.
 - Соотношение сторон блоков на CSS-Tricks – Методы поддержания пропорций блоков при масштабировании.
 - Вертикальное центрирование изображения в div на Stack Overflow – Обсуждения и решения сообщества.
 - Flexbox на Codrops – Коллекция практических примеров использования flexbox.
 


