Snap.svg предоставляет мощный набор утилитарных функций, которые упрощают работу с SVG-графикой. Эти функции помогают создавать, преобразовывать, а также управлять атрибутами элементов, без необходимости ручного манипулирования DOM.
Snap.format – функция для
форматирования строк с подстановкой переменных. Используется для
генерации динамических значений атрибутов:
var x = 50;
var y = 100;
var circleAttrs = Snap.format("cx:{cx}; cy:{cy}; r:40", {cx: x, cy: y});
// circleAttrs = "cx:50; cy:100; r:40"
Snap.rad и Snap.deg –
преобразование между градусами и радианами, что полезно для вращений и
трансформаций:
var angle = 90;
var rad = Snap.rad(angle); // 1.5707963267948966
var deg = Snap.deg(rad); // 90
Snap.len – вычисляет длину строки или
массива, что удобно при анимациях или динамическом создании графики.
Snap.svg предоставляет функции для работы с цветами и их преобразованиями:
Snap.color(color) – создаёт объект
цвета с компонентами r, g, b,
hex и opacity.var c = Snap.color("#ff6600");
console.log(c.r, c.g, c.b); // 255 102 0
Snap.hsb(h, s, b) – создаёт цвет в
формате HSB. Позволяет плавно изменять оттенки при анимации.Snap.rgb(r, g, b, opacity) – создаёт
RGB-цвет с необязательной прозрачностью.Snap.filter – упрощённое создание
SVG-фильтров для элементов.Snap.select и
Snap.selectAll – позволяют находить элементы SVG
по CSS-селекторам:
var circle = Snap.select("#myCircle");
var allRects = Snap.selectAll("rect");
Snap.parse – превращает строку SVG в
DOM-элемент Snap.svg:
var svgString = '<circle cx="50" cy="50" r="40" fill="blue"/>';
var element = Snap.parse(svgString);
Snap.fragment – создаёт фрагмент SVG,
который можно добавлять к любому контейнеру. Полезно для группировки
нескольких элементов перед вставкой:
var frag = Snap.fragment('<circle cx="50" cy="50" r="40"/> <rect x="10" y="10" width="30" height="30"/>');
paper.append(frag);
Snap.svg предоставляет гибкие методы для работы с атрибутами:
element.attr(attrName, value) –
установка одного атрибута.element.attr({attr1: value1, attr2: value2})
– массовая установка атрибутов.element.attr(attrName) – получение
значения атрибута.element.transform() – получение
текущей трансформации элемента.element.transform(transformString) –
применение трансформаций, таких как rotate,
scale, translate.Snap.svg имеет встроенные инструменты для работы с матрицами и координатами:
Snap.matrix() – создание матрицы
преобразований. Позволяет комбинировать масштабирование, вращение, сдвиг
и наклон.element.getBBox() – возвращает объект
с геометрической рамкой элемента: x, y,
width, height.element.getPointAtLength(length) –
вычисляет координаты точки на пути по длине.element.getTotalLength() – длина пути,
полезная для анимации обводки линии.Snap.svg интегрирует удобные методы управления CSS-классами:
element.addClass(className)element.removeClass(className)element.hasClass(className)element.toggleClass(className)Эти методы позволяют динамически управлять стилями SVG без прямого
изменения атрибутов class.
Snap.svg предоставляет утилиты, облегчающие анимацию элементов:
Snap.animate(from, to, setter, duration, easing, callback)
– универсальная функция для анимации числовых значений.Snap.animate(0, 100, function(val){
circle.attr({cx: val});
}, 1000, mina.easeinout);
mina.* – набор кривых ускорения для
анимации: mina.linear, mina.easein,
mina.easeout, mina.easeinout.Snap.forEach(array, callback) –
перебор элементов массива с передачей индекса и элемента.Snap.map(obj, callback) –
преобразование объекта в новый объект с применением функции ко всем его
ключам и значениям.Snap.clone(obj) – глубокое копирование
объектов и массивов, полезно для сохранения исходных данных перед
трансформацией.element.click(handler),
element.dblclick(handler) – обработка
кликов и двойных кликов.element.hover(f_in, f_out) – реакции
на наведение и уход курсора.Snap.ajax(url, callback) – упрощённый
способ загрузки SVG или данных с сервера.Эти утилиты делают Snap.svg не только библиотекой для работы с векторной графикой, но и полноценным инструментом для динамического взаимодействия с элементами и их анимацией.