Как вставить картинку в HTML: тег img, путь к файлу и атрибуты

Картинку в HTML вставляют тегом img с атрибутами src и alt.

Разобрали, как прописать путь к фото из папки, задать размер без искажений, сделать изображение ссылкой или фоном и отдать WebP через picture.

В конце таблица ошибок, из-за которых вместо картинки видно только подпись.

Статью написал:
Ваня Буявец, продюсер, основатель Checkroi
Ваня Буявец
Основатель Checkroi, продюсер, эксперт в выборе онлайн-курсов
Все 3030 статей автора Подписаться на Телеграм-канал
Одобрено экспертом:
Наташа Буявец, основатель Checkroi, эксперт по онлайн-курсам
Наташа Буявец
Основательница Checkroi, продюсер Youtube-каналов, эксперт по онлайн-курсам
Все 3684 экспертных мнения Подписаться на Телеграм-канал
Обложка: Как вставить картинку в HTML: тег img, путь к файлу и атрибуты

Картинку в HTML вставляют тегом <img>. В атрибут src пишете путь к файлу, в alt короткое описание того, что на картинке: <img src="img/cat.jpg" alt="Рыжий кот спит на подоконнике">. Закрывающего тега у <img> нет, текст внутрь не пишется.

Ниже разберём, как правильно указать путь к фото, какие атрибуты нужны каждый раз, как задать размер, сделать картинку ссылкой или фоном и почему вместо изображения иногда видно только подпись. Если HTML для вас пока новый, начните с материала о том, что такое язык разметки HTML.

CheckroiCheckroiПодборка курсов по HTML207 курсов • 42 школыСравните цены, школы, программу и найдите выгодные предложения по обучениюСравнить→

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

Рой вставляет фотографию на свою первую веб-страницу

Для проверки хватит текстового редактора и браузера. Как завести файл страницы, показано в инструкции как создать HTML-файл index.html.

  1. Положите картинку рядом со страницей. Удобнее всего завести папку img в той же папке, где лежит index.html, и сохранить фото туда.
  2. Добавьте тег <img> в нужное место страницы и пропишите в src путь к файлу вместе с расширением.
  3. Заполните alt: одной фразой опишите, что изображено. Сохраните файл и обновите страницу в браузере.
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="utf-8">
  <title>Моя первая страница</title>
</head>
<body>
  <h1>Мой кот</h1>
  <img src="img/cat.jpg" alt="Рыжий кот спит на подоконнике" width="600" height="400">
</body>
</html>

Писать </img> не нужно: валидатор W3C считает такой закрывающий тег ошибкой. Запись со слешем <img ... /> допустима, но ничего не меняет.

Как указать путь к картинке в src

Картинка не появляется чаще всего из-за пути. Браузер ищет файл относительно той страницы, на которой стоит тег, поэтому один и тот же src работает на главной и ломается на странице из вложенной папки.

Возьмём сайт с такой структурой:

site/
├── index.html
├── img/
│   └── cat.jpg
└── pages/
    └── about.html
Где стоит тег Что писать в src Как это читается
index.html img/cat.jpg относительный путь: папка img рядом со страницей
pages/about.html ../img/cat.jpg ../ поднимает на папку выше
любая страница сайта /img/cat.jpg путь от корня сайта, работает только на сервере
любая страница https://example.com/img/cat.jpg абсолютный адрес картинки в интернете

Если на странице pages/about.html оставить src="img/cat.jpg", браузер пойдёт искать файл по адресу pages/img/cat.jpg и получит ошибку 404.

Путь от корня со слешем в начале удобен на настоящем сайте: он одинаково работает на любой странице. Но если открыть файл двойным щелчком с диска, корнем станет корень диска, и картинка пропадёт. Как открыть страницу через браузер правильно, разобрано в статье как открыть HTML-файл.

Картинка с другого сайта

Можно вставить изображение по полной ссылке, не скачивая его. Минус в том, что вы от этого сайта зависите: файл переименуют или удалят, и на вашей странице останется пустое место. Часть сайтов к тому же запрещает показывать свои картинки на чужих страницах. Для своего проекта надёжнее хранить файлы у себя.

Канал основателя Checkroi Вани Буявца3 700 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединиться

Атрибуты тега img: что за что отвечает

Обязательных атрибутов два: src и alt. Остальные добавляют по задаче.

Атрибут Что делает Пример
src путь к файлу картинки src="img/cat.jpg"
alt текст вместо картинки для экранных чтецов и на случай, если файл не загрузился alt="Рыжий кот на подоконнике"
width, height ширина и высота в пикселях, без единиц измерения width="600" height="400"
title всплывающая подсказка при наведении мыши title="Барсик, 3 года"
loading lazy откладывает загрузку, пока картинка далеко от экрана loading="lazy"
decoding подсказка браузеру, декодировать картинку сразу или параллельно с остальной страницей decoding="async"
srcset, sizes набор файлов под разные экраны пример ниже
fetchpriority приоритет загрузки относительно других картинок: high, low или auto fetchpriority="high"

Подробные описания всех значений есть в справочнике MDN по элементу img.

Что писать в alt

В alt пишут то, что человек должен понять из картинки, если её не видит. Экранный чтец прочитает этот текст вслух, а при сломанном пути браузер покажет его на месте изображения.

  • Фото по делу: alt="Схема подключения датчика к Arduino", а не alt="картинка".
  • Чистое украшение вроде узора или разделителя: пустой alt="". Так экранный чтец его пропустит. Совсем убирать атрибут нельзя, без него валидатор выдаёт ошибку.
  • Картинка-ссылка: в alt пишут, куда ведёт ссылка, например alt="Перейти в корзину". Сам тег ссылки разобран в инструкции про тег a.

Поисковикам alt тоже нужен. В рекомендациях Google по картинкам сказано: «Определяя тему изображения, Google учитывает описания в атрибутах alt». Там же совет не перегружать alt ключевыми словами: список из десятка синонимов через пробел выглядит как спам.

Как задать размер картинки

Атрибуты width и height пишут числом без px. Значение width="600px" валидатор считает ошибкой.

Ставить оба атрибута стоит даже тогда, когда размер на экране потом задаёт CSS. По справке MDN, «Including height and width enables the aspect ratio of the image to be calculated by the browser prior to the image being loaded». Браузер заранее оставит под картинку место, и текст не будет прыгать вниз, когда она догрузится.

Чтобы большое фото не вылезало за край экрана телефона, добавьте в CSS одно правило:

img {
  max-width: 100%;
  height: auto;
}

Не забывайте про height: auto. Если оставить только max-width, ширина ужмётся, а высота останется из атрибута. Фото 600 × 400 в колонке шириной 300 пикселей станет 300 × 400 и вытянется по вертикали. Как подключить стили к странице, рассказано в статье как подключить CSS к HTML.

Картинка под разные экраны: srcset и picture

Одна и та же фотография на телефоне, планшете и мониторе

Телефону незачем качать фото шириной 1600 пикселей, если на экране оно займёт 400. Атрибут srcset перечисляет несколько версий файла с их шириной, а sizes подсказывает, какую ширину картинка займёт на странице. Браузер сам выберет подходящий файл:

<img src="img/cat-800.jpg"
     srcset="img/cat-400.jpg 400w, img/cat-800.jpg 800w, img/cat-1600.jpg 1600w"
     sizes="(max-width: 600px) 100vw, 800px"
     alt="Рыжий кот спит на подоконнике" width="800" height="533">

В src остаётся запасной файл для браузеров, которые srcset не понимают. Адаптивную вёрстку целиком, от гибкой сетки до картинок под разные экраны, подробно проходят на курсах по HTML.

Тег <picture> нужен, когда хочется отдать новый формат с запасным вариантом. Браузер берёт первый <source>, который умеет показать, а если не подошёл ни один, показывает обычный <img> внутри:

<picture>
  <source srcset="img/cat.avif" type="image/avif">
  <source srcset="img/cat.webp" type="image/webp">
  <img src="img/cat.jpg" alt="Рыжий кот спит на подоконнике" width="800" height="533">
</picture>

alt, размеры и класс для стилей пишут у <img>, а не у <picture>.

Подпись к фото: figure и figcaption

Если под фото нужна видимая подпись, оберните картинку в <figure> и добавьте <figcaption>. Так подпись связана с изображением прямо в разметке. Google, по его справке, берёт сведения о картинке в том числе из подписей к ним:

<figure>
  <img src="img/graph.png" alt="Рост продаж с января по июнь" width="800" height="450">
  <figcaption>Продажи за первое полугодие</figcaption>
</figure>

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

Ваня БуявецКанал основателя Checkroi Вани БуявцаЗабирайте промпты и обучение по нейросетям в моём Телеграм-каналеБольше 3 700 человек уже применяют Claude Code, ChatGPT и другие нейросети в работе, учёбе, бизнесе и жизниПерейти в канал

Как сделать картинку ссылкой

Оберните <img> в тег <a>, и по клику на картинку откроется адрес из href:

<a href="https://checkroi.ru/courses/navyk/html/">
  <img src="img/banner.png" alt="Курсы по HTML" width="300" height="250">
</a>

У такой ссылки нет текста, поэтому объяснить, куда она ведёт, может только alt. Пустой alt здесь оставит экранный чтец без подсказки, куда ведёт ссылка. Атрибуты href, target и rel подробно разобраны в инструкции как сделать ссылку в HTML.

Картинка фоном через CSS

Узоры, текстуры и фон шапки сайта ставят не тегом, а свойством background-image:

.hero {
  background-image: url("../img/pattern.png");
  background-size: cover;
  min-height: 300px;
}

Путь внутри url() считается от файла со стилями, а не от страницы. Если CSS лежит в папке css/, к картинкам в соседней img/ ведёт ../img/.

Для однотонного фона картинка не нужна, хватит свойства background-color и кода цвета. Как записывают цвет в RGB и HEX, разобрано в статье о цветах RGB.

Фоном стоит делать только украшения. В справке Google прямо сказано: «Google не индексирует изображения CSS». Экранные чтецы фон тоже не озвучивают, поэтому фото товара, схему или график вставляйте через <img>.

Какой формат выбрать

Все шесть форматов из таблицы показывают современные браузеры. Разница в весе файла и в том, что формат умеет.

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

В руководстве MDN по форматам для растровых картинок советуют WebP или AVIF, а запасной PNG или JPEG отдавать через <picture>. Для иконок и схем там рекомендуют SVG. Google Поиск, по его справке, поддерживает BMP, GIF, JPEG, PNG, WebP, SVG и AVIF.

Как ускорить загрузку картинок

Вот что ускоряет загрузку страницы с картинками:

  1. Уменьшите файл до нужного размера. Фото с камеры шириной 4000 пикселей в колонке на 800 пикселей весит лишние мегабайты. Сохраните копию нужной ширины и сожмите её.
  2. Добавьте loading="lazy" картинкам, которые ниже первого экрана. Браузер скачает их, когда человек до них прокрутит.
  3. Не ставьте lazy на главное фото вверху страницы. В руководстве web.dev так и написано: «Don’t lazy-load images that are likely to be in-viewport when the page loads». Такой картинке, наоборот, можно дать fetchpriority="high".
  4. Прописывайте width и height, чтобы страница не дёргалась при загрузке.
  5. Называйте файлы понятно: ryzhij-kot.jpg вместо IMG_0023.JPG. Google в той же справке называет имена вроде image1.jpg шаблонными и советует их избегать.

Частые ошибки, из-за которых картинка не видна

Рой нашёл ошибку в пути к картинке и исправил её

Признак почти всегда один: вместо фото виден текст из alt или значок сломанной картинки. Откройте инструменты разработчика (F12), вкладку Console: там будет строка с адресом, который браузер не смог загрузить.

Что видите Причина Как исправить
404 на картинку только на внутренних страницах относительный путь считается от текущей папки добавьте ../ или пишите путь от корня /img/...
на компьютере видно, на хостинге нет разный регистр: в коде Cat.jpg, файл cat.jpg пишите имена файлов строчными латинскими буквами; Windows и macOS регистр прощают, серверы на Linux нет
в коде путь вида C:\Users\...\cat.jpg путь к файлу на вашем диске Chrome не загружает локальные файлы на страницу из интернета; положите картинку в папку сайта
в пути обратные слеши img\cat.jpg так пишут пути в Windows, а не в адресах замените на /; Chrome поправит сам, но валидатор W3C считает это ошибкой
в имени файла пробелы адрес с пробелом не проходит проверку валидатора переименуйте файл: my-photo.jpg вместо my photo.jpg
картинка сплющена или вытянута в CSS задан max-width без height: auto добавьте height: auto

Проверить разметку целиком можно в валидаторе W3C: вставьте код страницы, и он покажет пропущенный alt, единицы в width и ошибки в путях. Устаревшие атрибуты вроде align валидатор отмечает предупреждением и предлагает заменить их на CSS. Другие теги, которые встречаются рядом с картинками, собраны в обзоре основных тегов HTML.

Где освоить HTML и CSS системно

Чтобы вставить картинку, хватит одного тега. Свёрстанная страница, которая одинаково выглядит на телефоне и мониторе, требует уверенного HTML, CSS и адаптивной вёрстки. Если хочется разобраться в этом по порядку с проверкой заданий, посмотрите курсы, где HTML разбирают с нуля:

КурсШколаСтоимость со скидкойВ рассрочкуДлитель­ностьОбзор курса от Checkroi
HTML и CSS с нуля
Перейти на сайт курса
SkillboxSkillbox91 626 ₽7635 ₽/мес.11 месяцевОбзор курса
HTML и CSS. Адаптивная вёрстка и автоматизация
Перейти на сайт курса
HTMLAcademyHTML Academy23 400 ₽3900 ₽/мес.2 месяцаОбзор курса
Основы вёрстки HTML и CSS
Перейти на сайт курса
Академия СинергияАкадемия Синергия32 676 ₽2723 ₽/мес.3 месяцаОбзор курса
HTML и CSS с нуляSkyproSkypro195 160 ₽7972 ₽/мес.12 месяцевОбзор курса
Онлайн-курс Вёрстка на HTML и CSS
Перейти на сайт курса
БруноямБруноям29 900 ₽2491 ₽/мес.3 месяцаОбзор курса

Больше программ — в полном каталоге курсов по HTML

Если вы ещё выбираете направление, прочитайте, чем занимается HTML-верстальщик и сколько он зарабатывает.

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

Какой тег вставляет картинку в HTML?

Картинку вставляет тег <img>. В атрибуте src указывают путь к файлу, в alt описание изображения: <img src="img/cat.jpg" alt="Рыжий кот">. Закрывающего тега у <img> нет.

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

Чаще всего неверен путь в src: файл лежит в другой папке, отличается регистр букв в имени или указан путь к файлу на вашем диске вида C:\Users\.... Откройте консоль браузера (F12): там будет адрес, который не загрузился. Разбор всех причин есть в разделе о частых ошибках.

Как вставить картинку из папки на компьютере?

Положите файл в папку сайта, например в img рядом с index.html, и укажите относительный путь: src="img/photo.jpg". Если страница лежит во вложенной папке, добавьте ../, чтобы подняться на уровень выше.

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

Задайте атрибуты width и height числом в пикселях без px: width="600" height="400". Чтобы фото уменьшалось на узком экране без искажений, добавьте в CSS max-width: 100% и height: auto.

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

Оберните тег <img> в <a href="...">. В alt напишите, куда ведёт ссылка: у такой ссылки нет текста, и для экранного чтеца её описывает только alt. Подробнее об атрибутах ссылок рассказано в инструкции про ссылки в HTML.

Читайте Checkroi первым в Google
Добавьте Checkroi в избранные источники — и наши разборы курсов и обзоры школ будут показываться выше в вашей выдаче Google.
Оставить комментарий
0 комментариев
Форма комментария

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

Напишите, что думаете. Нам важно ваше мнение!