Библиотека SVG.js построена вокруг объектной модели для работы с SVG-элементами, что обеспечивает гибкость и удобство манипуляции графикой через JavaScript. Понимание типов возвращаемых значений функций является ключевым для правильного использования методов и построения сложных сцен.
Большинство методов SVG.js возвращают объекты, представляющие SVG-элементы. Это позволяет сразу применять к ним цепочку методов.
Примеры объектов:
SVG().addTo('#container').const draw = SVG().addTo('#canvas').size(300, 300);
const rect = draw.rect(100, 100).fill('#f06');
В этом примере метод rect() возвращает объект
SVG.Rect, что позволяет сразу вызвать
.fill(), .stroke() или
.move().
Особенности:
Некоторые методы возвращают числа, строки или логические значения, которые отражают текущие свойства элемента.
Примеры:
.width() и .height() без параметров
возвращают число — текущую ширину или высоту
элемента..x() и .y() без параметров возвращают
координаты как числа..visible() возвращает boolean,
показывая, видим элемент или скрыт.const w = rect.width(); // число
const isVisible = rect.visible(); // true или false
Особенности:
Методы, возвращающие несколько элементов, дают объект SVG.Set — коллекцию SVG-элементов.
const group = draw.group();
const rect1 = group.rect(50, 50).fill('red');
const rect2 = group.rect(50, 50).fill('blue');
const children = group.children(); // SVG.Set
Особенности SVG.Set:
.each()children.each(function(i, children) {
this.move(i * 60, 0);
});
Методы анимации, такие как .animate(), возвращают объект
SVG.FX, представляющий текущее анимационное состояние
элемента.
rect.animate(1000).move(200, 200).fill('#0f0');
Особенности SVG.FX:
.after(),
.during(), .loop().stop() и .finish().attr() и .transform() можно
применять к FX-объекту для динамических измененийНекоторые методы возвращают специфические объекты или значения, которые важны для сложных взаимодействий:
.bbox() — объект с ключами
{x, y, width, height}.cx(), .cy() — числа, обозначающие центр
элемента.matrix() — объект SVG.Matrix,
содержащий матрицу трансформации элементаconst bbox = rect.bbox();
console.log(bbox.width, bbox.height); // размеры элемента
Особенности:
| Метод / Категория | Возвращаемое значение | Примечание |
|---|---|---|
Создание элементов (rect, circle) |
SVG.Element (Rect, Circle) | Поддержка цепочек вызовов |
Свойства элемента без параметров (width(),
x()) |
число, boolean, строка | Геттер |
Свойства элемента с параметром (width(100)) |
SVG.Element | Сеттер с цепочкой |
Группы и коллекции (group(),
.children()) |
SVG.Set | Применение методов ко всем элементам |
Анимация (animate()) |
SVG.FX | Для управления анимацией |
Геометрия и матрицы (bbox(),
matrix()) |
объект | Для вычислений и трансформаций |
Понимание типов возвращаемых значений в SVG.js позволяет создавать эффективные, динамичные и легко расширяемые SVG-сцены, управлять цепочками методов и корректно интегрировать анимацию и события.