SVG.js предоставляет мощный набор утилит и хелперов, которые упрощают создание, трансформацию и управление SVG-элементами. Эти инструменты помогают ускорить разработку, избегать ручного вычисления координат и параметров, а также обеспечивают более читаемый и поддерживаемый код.
В библиотеке SVG.js встроены функции для генерации случайных чисел и цветов. Они полезны при создании динамических визуализаций и генеративной графики.
Случайные числа:
SVG.random(0, 100); // возвращает число от 0 до 100
Параметры функции:
Случайные цвета:
SVG.Color.random(); // возвращает случайный цвет в формате rgb
Также можно создавать случайные цвета с учетом определённого
диапазона оттенков, насыщенности и яркости, используя методы цепочек
.hue(), .saturation(),
.lightness().
SVG.js содержит удобные хелперы для работы с точками, размерами и прямоугольниками.
Точки (Point):
let point = new SVG.Point(50, 100);
point.add(new SVG.Point(10, 20)); // сложение координат
point.x; // 60
point.y; // 120
Методы Point:
.add(point) — сложение координат.subtract(point) — вычитание координат.transform(matrix) — применение матрицы
трансформацииРазмеры (Size):
let size = new SVG.Size(200, 100);
size.width; // 200
size.height; // 100
Size-хелперы позволяют безопасно манипулировать размерами без прямого
изменения атрибутов width и height у
элементов.
Прямоугольники (Box):
let box = new SVG.Box(10, 20, 300, 150);
box.x; // 10
box.y; // 20
box.width; // 300
box.height; // 150
box.center(); // возвращает центр {x, y}
Box-хелперы незаменимы при позиционировании элементов относительно друг друга и при вычислении коллизий.
SVG.js предоставляет объект Matrix для сложных
трансформаций. Он упрощает масштабирование, повороты и перемещения без
изменения исходных атрибутов.
let matrix = new SVG.Matrix();
matrix.translate(50, 100); // сдвиг
matrix.scale(2, 2); // масштабирование
matrix.rotate(45, 50, 50); // поворот вокруг точки (50,50)
Методы Matrix:
.translate(x, y) — перемещение.scale(sx, sy, cx, cy) — масштабирование относительно
точки.rotate(angle, cx, cy) — поворот вокруг точки.flip(xAxis, yAxis, cx, cy) — зеркальное
отображение.multiply(matrix) — умножение на другую матрицуИспользование матриц особенно важно при сложной анимации или интерактивных приложениях, где требуется аккуратное комбинирование трансформаций.
Класс SVG.Color предоставляет методы для управления
цветами:
let color = new SVG.Color('#f06');
color.red(); // 255
color.green(); // 0
color.blue(); // 102
color.hex(); // '#ff0066'
color.rgba(); // 'rgba(255,0,102,1)'
Методы позволяют:
SVG.js включает несколько полезных утилит для работы с коллекциями элементов и объектами.
Функция SVG.utils.map() — аналог
Array.map, но оптимизирован для SVG-коллекций:
let arr = [1, 2, 3];
let result = SVG.utils.map(arr, x => x * 2); // [2, 4, 6]
Функция SVG.utils.each() — перебор
элементов:
SVG.utils.each([10, 20, 30], function(value, index){
console.log(index, value);
});
SVG.utils.clone() — глубокое
клонирование объектов и массивов, полезно при динамическом копировании
элементов и их данных.
Для упрощения асинхронных задач SVG.js предоставляет утилиты:
SVG.timer() — создание таймеров для анимаций без
использования setTimeout:let timer = SVG.timer(function(elapsed){
console.log(elapsed);
}, 1000); // интервал 1000 мс
SVG.animate() — запуск плавных анимаций с возможностью
цепочки хелперов.SVG.js включает встроенные хелперы для разбора и форматирования данных:
SVG.regex — набор регулярных выражений для проверки
координат, цветов и других атрибутов SVG.SVG.utils.split() — безопасное разделение строк с
SVG-данными, например path или transform.SVG.utils.array() — преобразует любой объект в массив
для удобного перебора.Point, Box и Matrix.SVG.Color и методы
.hue(), .saturation(),
.lightness().SVG.utils.map(),
each() и clone().SVG.random() и
SVG.Color.random().SVG.timer() и встроенный
.animate().Утилиты и хелперы SVG.js существенно сокращают количество низкоуровневого кода, делая работу с SVG более декларативной и структурированной, что особенно важно при создании интерактивных и динамических интерфейсов.