SVG (Scalable Vector Graphics) представляет собой XML-документ, в
котором каждая графическая сущность описывается тегами и атрибутами.
Любой SVG-файл начинается с корневого элемента <svg>,
внутри которого располагаются все остальные элементы сцены.
<svg width="300" height="200" viewBox="0 0 300 200">
<!-- Содержимое -->
</svg>
Ключевые атрибуты корневого элемента:
width, height — физические размеры области
отображенияviewBox — система координат (xmin, ymin, width,
height)xmlns — пространство имён (обычно указывается
автоматически)Атрибут viewBox задаёт логическую систему координат,
независимую от реального размера SVG.
viewBox="0 0 300 200"
Это означает:
Особенности:
Связь viewBox с width/height позволяет
масштабировать изображение без потери качества.
SVG поддерживает множество примитивов, которые могут использоваться как самостоятельные объекты или как части сложных фигур.
Простейшие элементы:
<rect x="10" y="10" width="100" height="50" />
<circle cx="50" cy="50" r="40" />
<line x1="0" y1="0" x2="100" y2="100" />
Атрибуты:
x, y — позицияcx, cy — центр (для окружностей)r — радиусwidth, height — размерыЭлемент <path> — основа сложной графики и ключевой
элемент при работе с Vivus.
<path d="M10 10 L100 100" />
Атрибут d содержит команды:
M — перемещение (move)L — линия (line)C — кривая БезьеZ — замыкание путиПример сложного пути:
<path d="M50 50 C70 10, 120 10, 140 50" />
Почему это важно для Vivus:
path)Для структурирования используются контейнеры
<g>:
<g id="group1">
<rect x="10" y="10" width="50" height="50" />
<circle cx="80" cy="80" r="20" />
</g>
Назначение:
Стили могут задаваться несколькими способами:
<rect fill="red" stroke="black" stroke-width="2" />
<rect style="fill: red; stroke: black;" />
<style>
.my-shape {
fill: blue;
stroke: black;
}
</style>
<rect class="my-shape" />
Основные свойства:
fill — заливкаstroke — обводкаstroke-width — толщина линииopacity — прозрачностьSVG поддерживает блок <defs> для хранения
шаблонов:
<defs>
<circle id="dot" r="5" />
</defs>
<use href="#dot" x="10" y="10" />
<use href="#dot" x="50" y="50" />
Преимущества:
SVG-документ представляет собой дерево:
svg
├── defs
├── g
│ ├── path
│ └── rect
└── circle
Особенности:
Любой элемент может быть преобразован:
<rect x="10" y="10" width="50" height="50" transform="rotate(45)" />
Виды трансформаций:
translate(x, y) — перемещениеscale(s) — масштабированиеrotate(angle) — вращениеskewX, skewY — наклонКомбинирование:
transform="translate(50,50) rotate(30)"
Для анимации Vivus критично понимание длины пути:
<path d="M10 10 L100 100" />
В браузере длина вычисляется через:
path.getTotalLength()
Использование:
Vivus активно использует свойства обводки:
<path
d="M10 10 L100 100"
stroke="black"
stroke-width="2"
fill="none"
/>
Ключевые параметры:
stroke-dasharray — шаблон штрихаstroke-dashoffset — смещениеИменно эти свойства изменяются для создания анимации.
<svg viewBox="0 0 200 200">
<path
d="M10 10 L190 10 L190 190 L10 190 Z"
stroke="black"
fill="none"
/>
</svg>
Требования:
<path>fill="none")<svg>...</svg>
Плюсы:
<img><img src="image.svg">
Минусы:
<object><object data="image.svg"></object>
Частично доступно, но сложнее в управлении.
Перед использованием Vivus структура должна быть оптимизирована:
<path>Инструменты:
Vivus проходит по DOM SVG и анимирует пути в порядке их следования.
Важно:
<path> определяет порядок анимации<g> могут использоваться для логикиПример:
<svg>
<path id="line1" d="..." />
<path id="line2" d="..." />
</svg>
Анимация:
fill вместо stroke<path> (например, только
<rect>)Vivus не просто отображает SVG — он интерпретирует его структуру как последовательность действий:
<path> — отдельный шагПоэтому структура SVG фактически становится сценарием визуального воспроизведения.