SVG: что это за формат и как вставить его на сайт

SVG описывает картинку текстом с координатами, поэтому она остаётся чёткой при любом размере.

Разбираем четыре способа вставить SVG в HTML, перекраску через fill и currentColor, фон через data:URL, поворот через transform и сжатие файла в SVGO.

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

SVG — это формат векторной графики: картинка описана не пикселями, а текстом с координатами фигур, поэтому она остаётся чёткой при любом размере. На сайт SVG вставляют четырьмя способами: кодом прямо в HTML, тегом <img>, фоном через CSS или тегом <object>. Если иконке нужно менять цвет из CSS, вставляйте её кодом и красьте свойством fill.

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

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

Что такое SVG простыми словами

Рой рисует векторную звезду в редакторе

Расшифровка: Scalable Vector Graphics, «масштабируемая векторная графика». Формат описывает рисунок на языке разметки, похожем на XML: круг задаётся центром и радиусом, линия двумя точками, сложная форма контуром <path>.

Стандарт ведёт W3C. Действующая рекомендация называется SVG 1.1 Second Edition от 16 августа 2011 года, а SVG 2 пока имеет статус Candidate Recommendation, последний снимок датирован 6 октября 2026 года.

Самый короткий рабочий файл выглядит так:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="48" height="48">
  <path d="M12 2l3 6.5 7 .8-5.2 4.8 1.5 7L12 17.6 5.7 21.1l1.5-7L2 9.3l7-.8z"/>
</svg>

Это звезда, она же пример во всех разделах ниже. Атрибут viewBox задаёт систему координат рисунка: четыре числа означают min-x, min-y, ширину и высоту (справка MDN по viewBox). Звезда нарисована в поле 24 на 24, а width и height растягивают её до 48 пикселей без потери чёткости.

Чем SVG отличается от растровых форматов:

Свойство SVG PNG JPG
Масштаб без потери качества да нет нет
Прозрачный фон да да нет
Цвет меняется из CSS да, если SVG в коде страницы нет нет
Подходит для фото нет да да
Что внутри файла текст пиксели пиксели

Отсюда и правило выбора: логотипы, иконки, схемы и графики делайте в SVG, фотографии оставляйте в JPG, PNG или WebP. Снимок векторными фигурами точно не передать: контуров понадобятся тысячи, и файл выйдет тяжелее JPG.

Как открыть файл и посмотреть его код

SVG хранится как текст, поэтому у файла две «стороны»: картинка и код. Увидеть обе можно без специальных программ.

  • Картинка: перетащите файл в окно браузера. Chrome, Firefox, Safari и Яндекс Браузер показывают SVG как обычное изображение.
  • Код: откройте файл любым текстовым редактором, от «Блокнота» до VS Code. Внутри будут теги <svg>, <path>, <circle> и их атрибуты.
  • Код на чужом сайте: откройте инструменты разработчика в Chrome сочетанием Ctrl+Shift+C (на Mac Cmd+Option+C, справка Chrome DevTools) и наведите курсор на иконку. Если SVG вставлен в разметку, в панели «Элементы» будет виден весь его код.

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

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

Как вставить SVG в HTML: четыре способа

Способ выбирают по одному вопросу: нужно ли управлять картинкой из CSS и JavaScript страницы.

Способ Код Цвет из CSS страницы Когда брать
Код в HTML (inline) <svg>…</svg> да иконки в кнопках и меню, анимация
Тег img <img src="star.svg" alt="…"> нет логотип, иллюстрация в тексте
Фон в CSS background-image: url(star.svg) нет декор, узоры, стрелки у списков
Тег object <object data="star.svg" type="image/svg+xml"> нет SVG со своими скриптами внутри

На кадре ниже одна и та же звезда вставлена четырьмя способами. В стилях страницы написано .star path { fill: #7324FF; }, но фиолетовой стала только звезда, вставленная кодом.

Одна SVG-иконка, вставленная в HTML четырьмя способами: цвет из CSS страницы получила только вставка кодом
CSS страницы красит звезду в фиолетовый, но срабатывает только у SVG, вставленного кодом. Через img, фон и object звезда остаётся чёрной

Почему так: при вставке через <img> и background-image браузер обращается с SVG как с картинкой. В этом режиме, по справке MDN, на SVG могут действовать ограничения безопасности: JavaScript отключён, а внешние ресурсы (изображения, таблицы стилей) не загружаются, если они не встроены в файл через data:URL. У <object> скрипты работают, но файл живёт отдельным документом, и правила CSS страницы до него не доходят.

Решение для типичной задачи: иконку, которая меняет цвет при наведении, вставляйте кодом, а логотип в шапке тегом <img> с атрибутом alt. Подробнее о связке стилей и разметки — в статье как подключить CSS к HTML.

Как поменять цвет иконки через fill и currentColor

Цвет заливки фигуры задаёт fill. Принцип тот же, что у любых каскадных стилей CSS: правило с более высоким приоритетом перекрывает остальные. Он бывает атрибутом прямо в разметке и CSS-свойством, и при конфликте выигрывает CSS: в справке MDN по fill сказано, что, когда заданы оба, приоритет у CSS-свойства. Если не задано ничего, фигура чёрная.

<style>
  circle { fill: blue; }
</style>
<svg viewBox="0 0 100 100" width="100" height="100">
  <circle cx="50" cy="50" r="40" fill="pink"/>
</svg>
<!-- круг будет синим: правило CSS сильнее атрибута -->

Обводку красят отдельно: stroke задаёт её цвет, stroke-width толщину. Прозрачность заливки меняет fill-opacity со значением от 0 до 1.

Одна иконка в трёх цветах

Значение currentColor берёт цвет текста родителя. Пропишите его иконке один раз, и она будет перекрашиваться вместе с кнопкой:

<button class="ok">
  <svg class="icon" viewBox="0 0 24 24"><path d="M12 2l3 6.5 …z"/></svg>
  В избранное
</button>

.icon { width: 20px; height: 20px; fill: currentColor; }
.ok   { color: #1a7f37; }
.warn { color: #b35900; }
.del  { color: #c62828; }
Одна SVG-иконка с fill: currentColor в трёх кнопках разного цвета
Одна и та же звезда с fill: currentColor берёт цвет текста каждой кнопки

Так обычно подключают иконочные наборы: одна звезда в коде, а цвет задают классы кнопок. Для тёмной темы достаточно поменять color у родителя.

Иконка не перекрашивается, хотя fill: currentColor на месте? Откройте код SVG и поищите style="fill:#000000" внутри <path>. Инлайн-стиль сильнее правила из таблицы стилей, его нужно удалить.

Векторный фон в CSS через data:URL

Мелкую декоративную графику (галочку чекбокса, свой маркер для списков в HTML) удобно хранить прямо в CSS, без отдельного файла. Для этого SVG записывают в адрес вида data:image/svg+xml,…:

.marker {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='%23c62828'/%3E%3C/svg%3E");
}

Три правила, без которых такой фон не появится:

  1. Решётку в цвете кодируйте как %23. В адресе символ # начинает фрагмент, по RFC 3986 он зарезервирован. С fill='#c62828' браузер обрезает адрес на решётке, и круга нет.
  2. Внутри используйте одинарные кавычки, если весь адрес обёрнут в двойные.
  3. Угловые скобки лучше заменить на %3C и %3E: в адресе их нет среди допустимых символов, а по правилу из справки MDN о data:URL зарезервированные символы, пробелы и переводы строк в данных тоже кодируют процентами.

Перекрасить такой фон через fill из CSS не получится: это снова режим картинки. Для смены цвета на наведении заведите две версии адреса или вставьте иконку кодом.

Трансформации: transform и rotate

Повернуть, сдвинуть или растянуть фигуру можно атрибутом transform. Главная ловушка здесь в точке вращения. Запись rotate(45) поворачивает фигуру вокруг начала координат, то есть верхнего левого угла viewBox, и квадрат уезжает за край. Чтобы повернуть его вокруг своего центра, передайте координаты центра вторым и третьим числом:

<svg viewBox="0 0 100 100" width="160" height="160">
  <rect x="30" y="30" width="40" height="40" fill="#7324FF"
        transform="rotate(45 50 50)"/>
</svg>
Поворот квадрата в SVG: rotate(45) вокруг начала координат и rotate(45 50 50) вокруг центра
Слева rotate(45) уводит квадрат за край рисунка, справа rotate(45 50 50) поворачивает его вокруг центра

С CSS-свойством transform та же история. У SVG-элементов начальное значение transform-box равно view-box (справка MDN по transform-box), поэтому transform-origin: center отсчитывается от поля рисунка, а не от фигуры. Для вращения вокруг центра фигуры добавьте пару строк:

.spinner path {
  transform-box: fill-box;
  transform-origin: center;
  animation: spin 1s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

Анимация из стилей страницы работает только у SVG, вставленного кодом. Внутри <img> браузер покажет её, лишь если она прописана в самом файле. Тот же SVG в коде можно менять и скриптом: его элементы входят в DOM-дерево страницы наравне с HTML-тегами.

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

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

Набор векторных иконок, которые остаются чёткими при увеличении

Файл, сохранённый из графического редактора, почти всегда тянет за собой служебные данные: комментарии, настройки окна, слои, лишние знаки после запятой в координатах. Их убирает оптимизатор SVGO, это бесплатная утилита на Node.js:

npm install -g svgo
svgo star.svg -o star.min.svg

Наша звезда в формате «Inkscape SVG» весила 1 533 байта. После SVGO 4.1.0 осталось 235 байт, утилита сама отчиталась о сжатии на 84,7 %. Ушли комментарий редактора, блок sodipodi:namedview с масштабом и размером окна, пустой <defs> и группа-слой. Сам контур не изменился.

Нарисовать или поправить исходник можно в бесплатном Inkscape, а если нужен векторный редактор в браузере, посмотрите наш разбор, чем заменить Illustrator онлайн. Перед заливкой пройдитесь по короткому чек-листу:

  • в корневом <svg> есть viewBox, иначе картинка не масштабируется;
  • жёсткие width и height в миллиметрах заменены пикселями или убраны в пользу CSS;
  • у иконки без подписи рядом есть текстовая альтернатива: alt у <img> или элемент <title> первым внутри <svg>;
  • в коде не осталось <script> и обработчиков вроде onclick, если вы их сами не писали.

Про <title> в справке MDN сказано, что он даёт доступное короткое описание графики, а браузеры обычно показывают его как всплывающую подсказку. Для совместимости с SVG 1.1 его ставят первым дочерним элементом.

Последний пункт не формальность. SVG состоит из текста, и в нём может оказаться скрипт. Поэтому WordPress из коробки не принимает SVG в медиатеку: в списке типов файлов ядра его нет, разрешение добавляют плагином или кодом темы. Файлы от посетителей сайта без очистки на сервер не пускайте.

Маленький SVG пригодится и как значок вкладки: как его подключить, разобрано в статье как добавить фавикон на сайт.

Частые ошибки и что с ними делать

Рой радуется, что иконка поменяла цвет
  1. Картинка не видна, место под ней пустое. Причина обычно в data:-адресе с решёткой или двойными кавычками внутри. Решение: # заменить на %23, внутренние кавычки сделать одинарными.
  2. Иконка не меняет цвет из CSS. Она вставлена через <img> или фоном. Решение: вставить код SVG в HTML или сделать отдельные файлы под каждый цвет.
  3. Цвет из CSS не применяется к SVG в коде. Внутри <path> остался style="fill:…" из редактора. Решение: удалить инлайн-стиль, а атрибут fill можно оставить, CSS его перекроет.
  4. SVG огромный или крошечный и не слушается CSS. В файле размеры в миллиметрах и нет viewBox. Решение: добавить viewBox с исходными размерами рисунка, а размер задавать стилями.
  5. Фигура при повороте улетает. Вращение идёт вокруг начала координат. Решение: rotate(угол cx cy) в атрибуте или transform-box: fill-box в CSS.

Где освоить вёрстку и CSS системно

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

КурсШколаСтоимость со скидкойВ рассрочкуДлитель­ностьОбзор курса от 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 месяцаОбзор курса

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

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

Что такое SVG простыми словами?

Это формат картинок, где изображение описано текстом: фигуры, координаты и цвета. Поэтому SVG остаётся чётким при любом увеличении, а его код можно открыть в текстовом редакторе и править.

Чем открыть SVG-файл?

Чтобы посмотреть картинку, перетащите файл в окно браузера. Чтобы увидеть код, откройте его любым текстовым редактором. Для правки рисунка подойдёт бесплатный Inkscape.

Как вставить SVG в HTML, чтобы менять цвет из CSS?

Вставьте код SVG прямо в разметку страницы, тегом <svg>. Тогда свойство fill из таблицы стилей перекрасит фигуры. При вставке через <img> или фоном CSS страницы до содержимого файла не доходит.

Что такое fill в SVG?

Это цвет заливки фигуры. Его задают атрибутом в разметке или CSS-свойством, и при конфликте побеждает CSS. Значение currentColor берёт цвет текста родителя, поэтому иконка перекрашивается вместе с кнопкой.

Почему SVG в background-image не отображается?

Чаще всего в data:URL осталась решётка в цвете. Замените # на %23, а внутренние кавычки сделайте одинарными. Подробный пример есть в разделе про фон в CSS.

Как уменьшить размер SVG?

Прогоните файл через бесплатный оптимизатор SVGO: он убирает комментарии, служебные данные редактора и лишние знаки в координатах. Наш тестовый файл из Inkscape сжался с 1 533 до 235 байт.

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

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

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