Menu

Как вставить картинку в HTML: тег img, alt и размер

Как вставить изображение в HTML тегом <img>: src и alt, размер картинки через width и height, адаптивные изображения, обрезка через object-fit, подписи через figure, ленивая загрузка и зазор под картинками.

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

Как вставить картинку в HTML

Используйте элемент <img>. src это файл картинки, alt ее описание, а width и height задают размер в пикселях. <img> это пустой элемент: закрывающего тега у него нет.

Здесь src это маленький SVG, записанный прямо в URL (data URI), чтобы пример работал без сети. На настоящем сайте src это путь к файлу:

srcОткуда загружает
photo.jpgphoto.jpg из той же папки, что и HTML-файл
images/photo.jpgИз папки images рядом с HTML-файлом
../photo.jpgИз папки на уровень выше
/images/photo.jpgИз папки images в корне сайта
https://example.com/photo.jpgС другого сайта (файл может переехать или исчезнуть)

На большинстве веб-серверов пути чувствительны к регистру: Photo.JPG и photo.jpg это разные файлы.

Текст alt

Текст alt заменяет картинку. Программы чтения с экрана зачитывают его вслух, а браузер показывает его, когда картинка не загружается. Обе картинки здесь указывают на несуществующие файлы:

Первая показывает на месте картинки свой alt, «Coddy logo». У второй alt пустой, поэтому показывать нечего, и программы чтения с экрана ее пропускают. Как писать alt:

  • Описывайте то, что важно в контексте. «Столбчатая диаграмма: продажи выросли вдвое с марта по июнь» говорит больше, чем «диаграмма».
  • Не начинайте с «Изображение…». Программы чтения с экрана и так объявляют, что это картинка.
  • Используйте alt="" для украшений (разделитель, декоративный элемент фона), чтобы программы чтения с экрана их пропускали.
  • Никогда не пропускайте alt. Без него некоторые программы чтения с экрана читают вместо описания имя файла, например «IMG подчеркивание 4032 точка jpg».
  • Для картинки внутри ссылки описывайте, куда ведет ссылка: <a href="/"><img src="logo.svg" alt="Home"></a>.

Размер картинки

Атрибуты width и height задаются в пикселях, без единиц измерения. Размеры из CSS их переопределяют. Самая полезная пара правил CSS для картинок позволяет изображению уменьшаться вместе с контейнером, но не растягиваться больше естественной ширины:

Первая картинка сохраняет свои 300 пикселей и вылезает из блока шириной 180 пикселей. Вторая уменьшается до 180 на 120, сохраняя пропорции 3:2. height: auto здесь важен: без него атрибут height="200" оставил бы картинку высотой 200 пикселей и сплющил бы ее.

Всегда пишите width и height в HTML, даже для адаптивных картинок. Браузер по ним заранее резервирует нужное место, пока файл не пришел, поэтому текст ниже не прыгает вниз, когда картинка загружается.

Обрезка через object-fit

Когда картинка должна заполнить блок другой формы (квадратный аватар из широкой фотографии, карточки одинаковой высоты), object-fit решает, что делать с лишним:

Исходник это картинка с кругом в пропорции 2:1, показанная в квадратных блоках:

  • fill (по умолчанию) растягивает картинку под блок, и круг становится овалом.
  • contain вписывает картинку целиком, оставляя пустые полосы.
  • cover заполняет блок и обрезает лишнее, круг остается круглым. Это обычный выбор для миниатюр и аватаров.

object-position выбирает, какая часть остается видимой при обрезке, например object-position: top для портретов.

Подписи через figure и figcaption

Подпись, которая относится к картинке, пишут в <figcaption>, и оба элемента кладут в <figure>. Так они связаны для программ чтения с экрана, и figure можно оформлять как единое целое:

Подпись не заменяет alt. alt говорит, что изображено на картинке; подпись добавляет то, что понадобилось бы и зрячему читателю.

Зазор под картинкой

Картинка стоит на базовой линии текста, как буква, поэтому контейнер оставляет под ней место для нижних выносных элементов букв вроде g и y. Рамка делает зазор видимым:

В первой рамке под синей картинкой видна белая полоска. display: block у картинки (второй блок) ее убирает; то же делает vertical-align: middle, если картинка должна остаться строчной.

Ленивая загрузка и адаптивные источники

Для картинок далеко внизу длинной страницы loading="lazy" откладывает загрузку, пока читатель не прокрутит к ним:

<img src="gallery-7.jpg" alt="Harbor at dusk" width="800" height="533" loading="lazy">

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

Чтобы отдавать маленьким экранам файлы поменьше, перечислите несколько размеров в srcset и сообщите браузеру через sizes, какой ширины будет картинка на экране. Файл выберет браузер:

<img
  src="photo-800.jpg"
  srcset="photo-400.jpg 400w, photo-800.jpg 800w, photo-1600.jpg 1600w"
  sizes="(max-width: 600px) 100vw, 600px"
  alt="Harbor at dusk" width="800" height="533">

<picture> идет дальше и предлагает разные форматы, а <img> служит запасным вариантом, который заодно несет alt:

<picture>
  <source srcset="photo.avif" type="image/avif">
  <source srcset="photo.webp" type="image/webp">
  <img src="photo.jpg" alt="Harbor at dusk" width="800" height="533">
</picture>

Форматы изображений

ФорматДля чего подходит
JPEGФотографии
PNGСкриншоты, изображения с четкими краями или прозрачностью
WebPФотографии и графика, меньше JPEG и PNG, с прозрачностью
AVIFФотографии, обычно меньше WebP
SVGЛоготипы, иконки и схемы; масштабируется до любого размера без размытия
GIFКороткие анимации, хотя беззвучный зацикленный <video> намного легче

Частые ошибки

  • Путь с вашего компьютера, например src="C:\Users\me\photo.jpg". Он работает только на вашей машине. Положите файл рядом с HTML и используйте относительный путь.
  • Нет alt. Он нужен каждому <img>, для украшений пустой.
  • И width, и height в CSS со значениями другой пропорции. Картинка растягивается. Задайте одно, а другое оставьте auto, или используйте object-fit.
  • Нет атрибутов width и height, и страница прыгает, пока загружаются картинки.
  • Огромные файлы, уменьшенные через CSS. Фотография шириной 4000 пикселей, показанная в 400 пикселей, все равно скачивается целиком. Уменьшите ее или используйте srcset.
  • Закрывающий тег </img>. <img> пустой элемент; закрывать нечего.

Картинки в примерах выше это маленькие встроенные SVG. Чтобы попробовать тот же код со своими фотографиями, вставьте его в песочницу HTML.

Часто задаваемые вопросы

Как вставить картинку в HTML?

Используйте тег <img> с файлом в src и описанием в alt: <img src="photo.jpg" alt="A red bicycle" width="600" height="400">. У <img> нет закрывающего тега.

Как изменить размер картинки в HTML?

Задайте атрибуты width и height в пикселях или используйте CSS, например img { width: 300px; height: auto; }. Если задать только одно измерение, а другое оставить auto, пропорции сохранятся.

Почему картинка не отображается в HTML?

Обычно неправильный путь в src: он указывается относительно HTML-файла, имена файлов на большинстве серверов чувствительны к регистру, а путь вроде C:\photos\cat.jpg существует только на вашем компьютере. Откройте URL картинки прямо в браузере, чтобы его проверить.

Что такое alt в HTML?

Атрибут alt это текстовая замена картинки. Его читают программы чтения с экрана, а браузер показывает его, если картинка не загрузилась. Опишите, что показывает или делает изображение; для чисто декоративных картинок используйте alt="".

Как сделать картинку адаптивной?

Задайте ей в CSS max-width: 100%; height: auto;. Тогда картинка уменьшается, чтобы поместиться в узкий контейнер, и никогда не становится больше своей естественной ширины.

Почему под картинкой появляется зазор?

По умолчанию картинки строчные и стоят на базовой линии текста, из-за чего под ними остается место для нижних выносных элементов букв. Задайте картинке display: block или vertical-align: middle, чтобы убрать зазор.

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ