В Snap.svg объект paper является основным контейнером
для всех SVG-элементов. Создается он с помощью функции
Snap(width, height) или Snap(selector):
var paper = Snap(800, 600); // создаем холст 800x600 пикселей
Параметры:
<svg> элемент в DOM.Созданный объект paper предоставляет методы для
добавления элементов SVG, управления их свойствами и анимацией.
Snap.svg поддерживает основные SVG-элементы через методы
paper:
circle(cx, cy, r) – создает окружность
с центром (cx, cy) и радиусом r.rect(x, y, width, height, rx?, ry?) –
прямоугольник. Параметры rx и ry задают радиус
скругления углов.ellipse(cx, cy, rx, ry) – эллипс с
центром (cx, cy) и радиусами по осям.line(x1, y1, x2, y2) – линия между
двумя точками.polygon(points) – многоугольник.
points — строка с координатами вершин:
"x1,y1 x2,y2 x3,y3".polyline(points) – ломаная линия с
аналогичным форматом.path(d) – путь SVG с использованием
атрибутов d (M, L,
C, Q, Z и др.).text(x, y, textContent) – текстовый
элемент с содержимым textContent.Пример создания элементов:
var c = paper.circle(100, 100, 50).attr({
fill: "red",
stroke: "black",
strokeWidth: 3
});
var r = paper.rect(200, 50, 100, 100, 10, 10).attr({
fill: "blue"
});
group()Метод paper.group(...elements) позволяет объединять
несколько элементов в единую группу для удобного управления:
var circle = paper.circle(50, 50, 20);
var rect = paper.rect(40, 40, 40, 40);
var group = paper.group(circle, rect);
group.transform("t100,0"); // смещение всей группы
Особенности:
attr,
transform), воздействуют на все дочерние элементы.Snap.svg позволяет создавать маски и клипы через объект
paper:
clip() – создание клипа через элемент
rect, circle, path и др.mask() – создание маски, где белая
область видима, а черная скрыта.Пример маски:
var maskRect = paper.rect(50, 50, 100, 100);
var mask = paper.mask(maskRect);
var circle = paper.circle(100, 100, 80).attr({ fill: "green" });
circle.attr({ mask: mask });
Объект paper поддерживает трансформации всех вложенных
элементов:
transform(tstr) – применяет строку
трансформации (t — translate, r — rotate,
s — scale, m — matrix).clear() – удаляет все элементы с
холста.select(selector) и
selectAll(selector) – выбор элементов по
CSS-селекторам.Пример трансформации:
var rect = paper.rect(50, 50, 100, 100);
rect.transform("t50,50 r45"); // смещаем на (50,50) и поворачиваем на 45°
Методы paper поддерживают анимацию через
animate(attrs, duration, easing, callback):
var circle = paper.circle(100, 100, 40).attr({ fill: "orange" });
circle.animate({ r: 80, fill: "yellow" }, 1000, mina.easeinout);
Для интерактивности можно использовать события:
click(handler) – клик мышью.hover(f_in, f_out) – наведение
курсора.mousedown(handler),
mouseup(handler),
mousemove(handler) – базовые события
мыши.paperimage(src, x, y, width, height) –
вставка растрового изображения в SVG.use(element) – создание экземпляра
элемента с использованием <use>.filter() – создание фильтров для
эффекта размытия, тени, инвертирования и т.д.gradient(type, stops) – создание
градиентов (linear, radial) с набором цветовых
остановок.Пример линейного градиента:
var grad = paper.gradient("l(0,0,0,1)#fff-#000");
var rect = paper.rect(10, 10, 200, 200).attr({ fill: grad });
Snap.svg позволяет работать с деревом элементов:
forEach(callback) – перебор всех
прямых дочерних элементов.select(),
selectAll() – выбор по CSS-селектору
внутри холста.getBBox() – получение ограничивающего
прямоугольника элемента.Пример перебора:
paper.forEach(function(el) {
el.attr({ stroke: "black" });
});
prepend(element) – перемещает элемент
в начало слоя.append(element) – перемещает элемент в
конец слоя.insertBefore(element),
insertAfter(element) – точное
позиционирование относительно других элементов.Эти методы paper позволяют создавать сложные композиции,
управлять их визуальными свойствами, анимациями и структурой SVG,
полностью раскрывая возможности Snap.svg для интерактивной графики.