SVG представляет собой масштабируемую векторную графику, основанную на XML-разметке и предназначенную для описания двухмерных изображений с помощью геометрических примитивов, контуров и текста. В отличие от растровых форматов, SVG не теряет качества при масштабировании, поскольку описывает изображение математически, а не как набор пикселей.
Любой SVG-документ начинается с корневого элемента
<svg>, который определяет область отрисовки и систему
координат.
<svg width="400" height="300" xmlns="http://www.w3.org/2000/svg">
</svg>
Ключевые атрибуты:
SVG может быть встроен в HTML напрямую, а также использоваться как отдельный файл.
Viewport определяет видимую прямоугольную область, в которой
происходит отрисовка SVG-графики. Он задаётся через атрибуты
width и height.
<svg width="500" height="400"></svg>
Viewport можно рассматривать как «окно», через которое наблюдается внутренняя система координат SVG.
Основные свойства viewport:
При изменении размеров viewport вся графика масштабируется, если не
задано иное поведение через viewBox.
viewBox определяет логическую систему координат SVG,
независимую от физического размера viewport.
<svg width="500" height="400" viewBox="0 0 100 100"></svg>
Формат:
viewBox = "minX minY width height"
Пример:
viewBox="0 0 100 100"
означает:
Ключевые особенности:
SVG использует декартову систему координат с особенностями экранной ориентации:
Это отличает SVG от классической математической системы координат.
Соотношение viewport и viewBox определяет, как графика адаптируется к размеру контейнера.
Если:
<svg width="200" height="200" viewBox="0 0 100 100"></svg>
то:
При изменении размеров viewport без изменения viewBox происходит автоматическое масштабирование всех элементов.
Атрибут preserveAspectRatio управляет поведением
масштабирования при несоответствии пропорций viewport и viewBox.
<svg viewBox="0 0 100 100" preserveAspectRatio="xMidYMid meet"></svg>
Основные режимы:
Параметры выравнивания:
xMin, xMid, xMaxYMin, YMid, YMaxКомбинация определяет положение содержимого внутри viewport.
SVG строится из набора примитивов, каждый из которых имеет собственные атрибуты координат и размеров.
<rect x="10" y="10" width="80" height="40" fill="blue" />
Атрибуты:
<circle cx="50" cy="50" r="20" fill="red" />
Атрибуты:
<line x1="0" y1="0" x2="100" y2="100" stroke="black" />
Атрибуты:
<ellipse cx="50" cy="50" rx="30" ry="20" fill="green" />
<text x="10" y="30" font-size="16">SVG текст</text>
Особенности:
Элемент <path> является наиболее гибким примитивом
SVG, позволяющим описывать сложные формы.
<path d="M10 10 L90 10 L90 90 Z" fill="none" stroke="black" />
Основные команды:
Path используется для построения графиков, диаграмм и сложных визуальных структур.
SVG поддерживает геометрические преобразования через атрибут
transform.
<g transform="translate(50, 20)"></g>
<g transform="scale(2)"></g>
<g transform="rotate(45)"></g>
Комбинирование трансформаций выполняется последовательно слева направо.
Элемент <g> используется для объединения
графических объектов в логическую группу.
<g fill="blue">
<circle cx="20" cy="20" r="10" />
<rect x="40" y="10" width="20" height="20" />
</g>
Особенности:
SVG поддерживает стили через:
fill, stroke)Пример CSS:
<style>
.highlight {
fill: orange;
stroke: black;
}
</style>
<circle class="highlight" cx="50" cy="50" r="20" />
Основные свойства:
fill — заливкаstroke — обводкаstroke-width — толщина линииopacity — прозрачностьКаждый SVG-элемент интерпретирует координаты относительно текущей системы координат, которая может быть изменена через:
viewBoxtransform<g> группыВ результате формируется иерархическая система пространственных преобразований, где каждый элемент наследует контекст своего родителя.
SVG-структура основана на математическом описании форм, что обеспечивает:
Это делает SVG основой для построения интерактивной визуализации, включая диаграммы, графики и интерфейсные элементы в библиотеках визуализации данных, таких как D3.js.