Для работы с библиотекой SVG.js первым шагом является создание
контейнера, в котором будут размещаться графические элементы. Контейнер
создается через объект SVG(), который принимает в качестве
параметра ID или DOM-элемент, куда будет вставлен SVG:
// Создание SVG-контейнера в элементе с id="drawing"
const draw = SVG().addTo('#drawing').size(600, 400);
Метод size(width, height) задает размеры контейнера в
пикселях. Контейнер автоматически создается как тег
<svg> в DOM, и все последующие фигуры будут
добавляться внутрь него.
SVG.js предоставляет удобные методы для создания стандартных SVG-элементов: прямоугольников, кругов, эллипсов, линий, многоугольников и текста.
const rect = draw.rect(150, 100).attr({ fill: '#f06', stroke: '#000', 'stroke-width': 3 });
rect(width, height) — задает размеры
прямоугольника.attr({...}) — устанавливает атрибуты: цвет заливки
(fill), цвет обводки (stroke) и ширину линии
(stroke-width).move(x, y):rect.move(50, 50);
const circle = draw.circle(80).attr({ fill: '#0f9', stroke: '#000', 'stroke-width': 2 });
circle.center(300, 150);
circle(diameter) — задает диаметр круга.center(x, y) — устанавливает координаты центра
круга.const ellipse = draw.ellipse(120, 80).attr({ fill: '#09f', stroke: '#000' });
ellipse.center(450, 150);
ellipse(width, height) задает размеры по горизонтали и
вертикали.const line = draw.line(50, 300, 550, 300).stroke({ width: 4, color: '#f60' });
line(x1, y1, x2, y2) задает начальные и конечные
координаты.stroke() упрощает настройку обводки линии.const polygon = draw.polygon('200,350 250,250 300,350').fill('#ff0').stroke({ width: 2 });
polygon('x1,y1 x2,y2 x3,y3') — задает вершины
многоугольника через строку координат.const text = draw.text('Привет, SVG.js!').move(50, 20).font({ size: 24, family: 'Arial', anchor: 'start' });
text('...') создает текстовый элемент.font({...}) позволяет настроить размер шрифта,
семейство и выравнивание.Группировка позволяет объединять несколько объектов для совместного управления:
const group = draw.group();
group.add(rect);
group.add(circle);
group.move(50, 50);
group() создаёт контейнер для элементов.SVG.js предоставляет простые методы для трансформаций:
move, center, rotate,
scale и skew.
rect.rotate(45, 125, 100); // Поворот на 45° вокруг точки (125, 100)
circle.scale(1.5); // Увеличение размера круга в 1.5 раза
Анимации выполняются через метод
animate(duration, easing):
circle.animate(1000, '<>').move(400, 200).attr({ fill: '#f00' });
1000 — длительность в миллисекундах.'<>' — функция плавности (easing).SVG.js позволяет привязывать обработчики событий к элементам:
rect.click(function() {
this.fill({ color: '#0ff' });
});
circle.mouseover(function() {
this.scale(1.2);
});
circle.mouseout(function() {
this.scale(1);
});
click(), mouseover(),
mouseout() — стандартные события мыши.this ссылается на сам
SVG-элемент.Создадим прямоугольник с анимацией и интерактивностью:
const box = draw.rect(100, 100).fill('#f06').move(100, 100).stroke({ width: 3, color: '#000' });
box.hover(
function() { this.fill({ color: '#0f9' }).scale(1.2); },
function() { this.fill({ color: '#f06' }).scale(1); }
);
box.animate(2000, '<>').rotate(360).loop();
hover(inFn, outFn) задает поведение при наведении и
уходе мыши.loop() позволяет бесконечно повторять
анимацию.SVG.js объединяет простоту создания графики с гибкостью управления анимациями, трансформациями и событиями. Даже на первом примере видно, что библиотека позволяет создавать динамические и интерактивные SVG-элементы без необходимости писать громоздкий чистый SVG-код.