SVG — это векторный формат изображения (на основе XML), поэтому он масштабируется до любого размера без размытия. Вы можете включить его двумя основными способами, каждый с компромиссами.
Встроенный SVG — разметка прямо в HTML
SVG — это векторный формат изображения (на основе XML), поэтому он масштабируется до любого размера без размытия. Вы можете включить его двумя основными способами, каждый с компромиссами.
Преимущества: вы можете стилизовать его с помощью CSS (fill, stroke), анимировать его части, изменять цвет через currentColor (наследует цвет текста) и реагировать на события — потому что это реальный DOM. Никаких дополнительных HTTP-запросов.
Недостатки: раздувает HTML, не кэшируется отдельно, повторяющиеся значки дублируют разметку.
<img> — ссылка на файл<img src="logo.svg" alt="Company logo" width="120" />
Преимущества: кэшируется браузером, сохраняет HTML в чистоте, просто. Недостатки: вы не можете стилизовать или обрабатывать его внутреннее содержимое с помощью CSS/JS — это непрозрачное изображение.
Need to recolor/animate/interact with the SVG → inline SVG
Static logo/illustration, want caching + clean HTML → <img src=".svg">
Many repeated icons → an SVG sprite (<use>) or an icon component
<svg role="img" aria-label="Settings">...</svg> <!-- meaningful icon -->
<svg aria-hidden="true">...</svg> <!-- decorative: hide from AT -->
Выбор между встроенным и <img> SVG сводится к тому, нужно ли вам стилизовать/анимировать графику (встроенный) или просто отобразить её эффективно (<img>).
Значки, которые меняют цвет при наведении или при смене темы, идут встроенными (часто как компоненты); статические активы бренда идут через <img>.
В любом случае векторы остаются четкими при любом разрешении — идеально для значков и логотипов.