Метод rect(width, height) библиотеки SVG.js создаёт
прямоугольник с указанной шириной и высотой. После создания объект можно
позиционировать и настраивать его визуальные свойства через цепочку
методов.
const draw = SVG().addTo('body').size(500, 500);
const rect = draw.rect(200, 100).move(50, 50).fill('#3498db').stroke({ width: 3, color: '#2980b9' });
move(x, y) — устанавливает координаты
верхнего левого угла прямоугольника.fill(color) — задаёт заливку фигуры.
Можно использовать цветовые строки, градиенты или прозрачность.stroke({ width, color, dasharray }) —
задаёт обводку с шириной, цветом и, при необходимости, пунктиром.Дополнительно можно использовать:
radius(rx, ry) — скругление углов.
Если передать одно значение, оно применяется ко всем углам одинаково,
два значения задают разные радиусы по осям X и Y.rect.radius(20); // Скругление всех углов на 20px
rect.radius(20, 10); // Скругление: rx=20, ry=10
circleМетод circle(diameter) создаёт окружность с указанным
диаметром. Центр окружности задаётся методом
center(x, y).
const circle = draw.circle(100).center(200, 200).fill('#e74c3c').stroke({ width: 4, color: '#c0392b' });
center(x, y) — устанавливает
координаты центра окружности.radius(r) — альтернатива диаметру,
позволяет задать радиус вместо полного размера.move(x, y), но
тогда координаты будут относиться к верхнему левому углу ограничивающего
квадрата.Особенности окружностей:
circle является подтипом
<ellipse>, поэтому можно применять методы
трансформации и анимации, характерные для эллипсов.animate() можно создавать плавные
анимации изменения радиуса и перемещения центра.circle.animate(1000).radius(50).center(300, 300);
ellipseЭллипс создаётся методом ellipse(rx, ry), где
rx — радиус по оси X, а ry — по оси Y.
const ellipse = draw.ellipse(150, 100).center(250, 150).fill('#2ecc71').stroke({ width: 2, color: '#27ae60' });
center(x, y) — задаёт центр
эллипса.rx и ry — радиусы по
горизонтали и вертикали.size(width, height), при этом радиусы
пересчитаются автоматически.ellipse.size(200, 120); // Изменяет ширину и высоту эллипса
Все базовые примитивы (rect, circle,
ellipse) поддерживают общие методы библиотеки SVG.js:
fill(color) — задаёт цвет или градиент
заливки.stroke({ width, color, linecap, linejoin })
— настройка обводки.move(x, y) и
center(x, y) — позиционирование
элементов.size(width, height) — изменение
размеров (для окружностей и эллипсов пересчитывает радиусы).animate(duration, ease) — анимация
изменений свойств фигуры.Примеры анимации:
rect.animate(1500, '<>').move(300, 50).fill('#f1c40f');
ellipse.animate(1000).size(250, 150).stroke({ color: '#16a085' });
circle.animate(2000).radius(80).center(400, 400);
(0,0) находится в левом верхнем углу
контейнера.rotate(angle, cx, cy), scale(sx, sy) и
translate(dx, dy) к любому примитиву.group(), чтобы применять трансформации и стили ко всем
элементам одновременно.click, mouseover, mouseout для
интерактивности.rect.click(() => alert('Прямоугольник нажат'));
circle.hover(() => circle.fill('#9b59b6'), () => circle.fill('#e74c3c'));
group()) и заранее задавать общие
стили через attr() или fill/stroke.rect().radius(rx, ry) вместо ручного
округления через кривые, это упрощает код и повышает читаемость.Эта основа позволяет создавать, позиционировать и анимировать базовые примитивы в SVG.js, обеспечивая гибкость для построения сложных графических интерфейсов и интерактивной визуализации.