Как убрать у картинки отступ снизу?

Отступ снизу становится хорошо заметен, когда изображение помещено в контейнер с цветным фоном или рамкой (рис. 1).

Рис. 1. Отступ под изображением

Такой отступ возникает из-за того, что элемент <img> воспринимается как строчный, а для строки браузер оставляет снизу место для выносных элементов букв. Такие буквы как д, р, у, ц, щ, g и др. имеют «хвостик» ниже базовой линии текста (рис. 2), для которых и требуется свободное пространство.

Рис. 2. Базовая линия текста

Рассмотрим несколько популярных методов устранения отступов у картинок.

Свойство display

Поскольку отступ возникает из-за того, что элемент <img> воспринимается как строчный, его следует преобразовать в блочный элемент. Для этого применяется свойство display со значением block (пример 1).

Пример 1. Использование display

<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Изображение</title> <style> .card { border: 1px solid #333; /* Параметры рамки */ display: inline-block; /* По ширине картинки */ } .card > img { display: block; /* Блочный элемент */ } </style> </head> <body> <div class="card"> <img src="image/es6.svg" alt="ES6" width="150"> </div> </body> </html>

Результат данного примера показан на рис. 3.

Рис. 3. Изображение без отступа снизу

Свойство vertical-align

vertical-align используется для выравнивание строчных элементов по вертикали. Достаточно изображениям задать выравнивание по нижнему краю (значение bottom), как никакого отступа не останется (пример 2).

Пример 2. Использование vertical-align

<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Изображение</title> <style> .card { border: 1px solid #333; /* Параметры рамки */ display: inline-block; /* По ширине картинки */ } .card > img { vertical-align: bottom; /* Выравнивание по нижнему краю */ } </style> </head> <body> <div class="card"> <img src="image/es6.svg" alt="ES6" width="150"> </div> </body> </html>

Работа с текстом

Часть методов устранения отступа основаны на стилевых свойствах, работающих непосредственно с текстом. К примеру, свойство font-size устанавливает размер шрифта, и если для контейнера с изображением задать нулевой размер текста, то и отступ станет нулевым.

.card {
  border: 1px solid #333; /* Параметры рамки */
  display: inline-block; /* По ширине картинки */
  font-size: 0; /* Размер шрифта */
}

Свойство line-height устанавливает высоту строки текста и, опять же, нулевое значение влияет на строчные элементы и делает отступ нулевым.

.card {
  border: 1px solid #333; /* Параметры рамки */
  display: inline-block; /* По ширине картинки */
  line-height: 0; /* Высота строки */
}

Учтите, что приведённые методы не подходят для блоков, в которых одновременно встречаются изображения и текст. Они вносят сильные искажения в текст, в результате он перестанет отображаться нужным образом.