Клавиша / esc

Вставка изображений в HTML

Разбираемся, как добавить изображение на HTML-страницу: от привычного тега <img> до современных приёмов вроде <picture> и вставки через SVG.

Время чтения: меньше 5 мин

Картинки — важная часть веба. Они делают сайты визуально выразительными, помогают передать смысл, иллюстрируют текст и даже играют функциональную роль (например, иконки или изображения товаров). И у HTML есть сразу несколько способов вставки изображений.

Классика жанра: тег <img>

Скопировано

Самый очевидный способ вставить изображение — использовать тег <img>:

        
          
          <img  src="kotik.webp"  alt="Кот по кличке Комaру с белой грудкой и серо-чёрными полосками  на теле в очках с жёлтыми линзами смотрит прямо в камеру">
          <img
  src="kotik.webp"
  alt="Кот по кличке Комaру с белой грудкой и серо-чёрными полосками
  на теле в очках с жёлтыми линзами смотрит прямо в камеру"
>

        
        
          
        
      
Открыть демо в новой вкладке

Этот способ хорош для вставки контентных изображений — тех, которые несут смысл. Например, фото товара или иллюстрации к статье.

Современный подход: <picture>

Скопировано

Если нужно подгружать разные изображения в зависимости от устройства или использовать адаптивные форматы, пригодится тег <picture>:

        
          
          <picture>  <source srcset="cat.webp" type="image/webp">  <source srcset="cat.jpg" type="image/jpeg">  <img    src="cat.jpg"    alt="Белый котик смотрит в окно,    на фоне коричневый котик тоже смотрит в окно"  ></picture>
          <picture>
  <source srcset="cat.webp" type="image/webp">
  <source srcset="cat.jpg" type="image/jpeg">
  <img
    src="cat.jpg"
    alt="Белый котик смотрит в окно,
    на фоне коричневый котик тоже смотрит в окно"
  >
</picture>

        
        
          
        
      
Открыть демо в новой вкладке

<picture> позволяет указать несколько версий изображения. Браузер сам выберет подходящее по поддерживаемому формату.

Через CSS

Скопировано

Изображения можно использовать как фоновые с помощью background-image:

        
          
          .container {  background-image: url("kotik.jpg");}
          .container {
  background-image: url("kotik.jpg");
}

        
        
          
        
      
Открыть демо в новой вкладке

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

Через <object> и <embed>

Скопировано

Эти способы используются редко, но они позволяют встроить интерактивный SVG или даже PDF:

        
          
          <object data="chart.svg" type="image/svg+xml"></object>
          <object data="chart.svg" type="image/svg+xml"></object>

        
        
          
        
      
        
          
          <embed src="diagram.svg" type="image/svg+xml">
          <embed src="diagram.svg" type="image/svg+xml">

        
        
          
        
      

Обычно <img> и <picture> предпочтительнее.

Через <canvas>

Скопировано

Это уже не просто картинка, а полноценный рисовальный холст:

        
          
          <canvas id="myCanvas" width="259" height="194"></canvas>
          <canvas id="myCanvas" width="259" height="194"></canvas>

        
        
          
        
      

На нём можно «рисовать» изображения с помощью JavaScript:

        
          
          const canvas = document.getElementById('myCanvas')const ctx = canvas.getContext('2d')const img = new Image()img.src = 'cat.jpg'img.onload = () => ctx.drawImage(img, 0, 0)
          const canvas = document.getElementById('myCanvas')
const ctx = canvas.getContext('2d')
const img = new Image()
img.src = 'cat.jpg'
img.onload = () => ctx.drawImage(img, 0, 0)

        
        
          
        
      
Открыть демо в новой вкладке

<canvas> используется в играх, графиках, анимации.

Какой способ выбрать?

Скопировано
  • <img> — почти всегда подходит, если нужно просто вставить картинку.
  • <picture> — для адаптивности, ретина-дисплеев, .webp и .avif.
  • <object> и <embed> — когда нужно вставить PDF или интерактивные медиа.
  • <canvas> — когда изображение нужно рисовать динамически.

На практике

Скопировано

DrakesWeb советует

Скопировано

🛠 В своих проектах я часто использую комбинацию <img> для смысловых изображений, <picture> если нужна адаптивность, а background-image для иконок и фонов.

🛠 Когда работал с электронной библиотекой, использовал <picture> для обложек книг: WebP — по умолчанию, JPEG — как запасной вариант. Это экономило трафик и ускоряло загрузку страниц на мобильных.