Для построения простых линий используется метод line().
Он позволяет задать начальные и конечные координаты линии в формате
(x1, y1, x2, y2).
const draw = SVG().addTo('body').size(600, 400);
const line = draw.line(50, 50, 300, 50);
line.stroke({ color: '#f06', width: 4 });
Ключевые моменты:
stroke({ color, width, linecap }) — задаёт цвет,
толщину и стиль окончания линии (butt, round,
square).SVG().size(width, height)..move(x, y) для перемещения
линии, хотя для прямой линии чаще удобнее менять координаты
напрямую.line.move(100, 100); // смещает всю линию на новые координаты
Для создания ломаных линий используется polyline(). В
отличие от line(), polyline может иметь произвольное
количество точек.
const polyline = draw.polyline('50,150 150,50 250,150 350,50');
polyline.fill('none').stroke({ color: '#0f9', width: 3 });
Особенности:
"x1,y1 x2,y2 x3,y3 …" или
массивом массивов [[x1,y1],[x2,y2],[x3,y3]].polygon или
вручную добавить последнюю точку равной первой.stroke-dasharray, stroke-opacity,
fill и т.д.polyline.stroke({ dasharray: '5,5', width: 2 });
polygon() позволяет создавать замкнутые многоугольники.
В отличие от polyline, последняя точка автоматически
соединяется с первой.
const polygon = draw.polygon('100,200 200,100 300,200 200,300');
polygon.fill('#ff0').stroke({ color: '#f00', width: 2 });
Особенности polygon:
.animate(1000).rotate(45).rotate, scale, translate) и
фильтры (blur, shadow).Для удобного построения сложных фигур лучше использовать массивы точек:
const points = [
[50, 50],
[150, 100],
[200, 50],
[300, 150]
];
draw.polyline(points).stroke({ color: '#00f', width: 2 }).fill('none');
draw.polygon(points).fill('#0f0').stroke({ width: 3 });
Такой подход облегчает динамическое добавление точек и использование циклов.
SVG.js позволяет изменять линии после их создания. Для
line:
line.plot(100, 100, 400, 100); // меняет координаты начала и конца линии
Для polyline и polygon:
polyline.plot([[50,150],[150,50],[250,150],[350,50]]);
polygon.plot([[100,200],[200,100],[300,200],[200,300]]);
Анимация:
line.animate(2000, '<>').plot(100, 200, 400, 200);
polygon.animate(1500).scale(1.5, 1.5);
Ключевые параметры анимации:
<, >,
<>, linear)..loop().Линии и ломаные можно использовать интерактивно:
polygon.click(function() {
this.fill({ color: '#f0f' });
});
polyline.mouseover(function() {
this.stroke({ color: '#f00', width: 4 });
}).mouseout(function() {
this.stroke({ color: '#0f0', width: 2 });
});
События click, mouseover,
mouseout, mousedown, mouseup
работают с любыми SVG элементами одинаково.
polygon рисуются быстрее, чем
многократные line или polyline, особенно при
анимации..plot(), а не создание нового объекта.Эта часть библиотеки SVG.js позволяет гибко управлять графикой: от
простых линий до сложных многоугольников, с поддержкой стилей, анимации
и интерактивности. Правильное использование line,
polyline и polygon облегчает создание
динамических визуальных элементов и эффектов.