Библиотека Snap.svg предоставляет удобный интерфейс для работы с
SVG-графикой в JavaScript. Помимо создания объектов и работы с
элементами, Snap.svg включает статические методы,
которые вызываются напрямую через объект Snap и не требуют
предварительного создания экземпляра документа. Эти методы используются
для глобальных операций: создания элементов, работы с цветами, генерации
случайных чисел и математических вычислений.
Для создания нового документа SVG используется метод:
var s = Snap(800, 600);
width и height задают размеры
канвы.<svg>.Метод Snap.parse() позволяет превращать строку с
SVG-кодом в DOM-элементы Snap:
var fragment = Snap.parse('<circle cx="50" cy="50" r="40" fill="red"/>');
s.append(fragment);
DocumentFragment, который можно
вставлять в любой контейнер SVG.Snap.svg предоставляет несколько статических методов для работы с цветами:
Превращает строку с цветом в объект с компонентами r,
g, b, hex и
opacity:
var c = Snap.color("rgba(255,0,0,0.5)");
console.log(c.r, c.g, c.b, c.opacity); // 255, 0, 0, 0.5
#RRGGBB, #RGB,
rgb(), rgba(), hsl(),
hsla().Создает цвет в формате HSL:
var color = Snap.hsl(120, 0.5, 0.4); // возвращает объект Snap.Color
toString().Преобразование между градусами и радианами:
var angleRad = Snap.rad(90); // π/2
var angleDeg = Snap.deg(Math.PI); // 180
transform: rotate(angle).Генерация случайного числа в диапазоне [min, max):
var r = Snap.random(10, 20); // число от 10 до 19.999...
Метод для привязки значения к определенной сетке или шагу:
var val = Snap.snapTo([0, 50, 100], 37); // 50
Возвращает количество элементов в массиве или объекте, поддерживает как JS-массивы, так и SVG-пути:
var points = [1,2,3,4];
console.log(Snap.len(points)); // 4
Позволяет применять функцию ко всем элементам массива или объекта:
var arr = [1,2,3];
var doubled = Snap.map(arr, function(value) {
return value * 2;
});
console.log(doubled); // [2,4,6]
Array.map, но может применяться и к
объектам Snap.Статический метод для работы с матрицами трансформации:
var m = Snap.matrix();
m.translate(50, 100).rotate(45);
Snap.svg предоставляет вспомогательные статические методы для работы с путями:
Snap.path.getTotalLength(path) – возвращает длину
SVG-пути.Snap.path.getPointAtLength(path, length) – координаты
точки на пути по длине.Snap.path.isPointInside(path, x, y) – проверка
попадания точки внутрь замкнутого пути.var len = Snap.path.getTotalLength("M0,0 L100,0 L100,100 Z");
var point = Snap.path.getPointAtLength("M0,0 L100,0 L100,100 Z", 50);
Статические методы Snap.svg обеспечивают универсальные инструменты для создания и манипуляции SVG, облегчая работу с цветами, матрицами, путями и координатами, без необходимости создавать отдельные объекты. Их правильное использование позволяет писать эффективный, компактный и гибкий код, идеально подходящий для интерактивной графики и динамических визуализаций.