В библиотеке Snap.svg для создания радиальных градиентов используется
метод paper.gradient(), который позволяет задавать плавный
переход цвета от центра к периферии элемента. Радиальные градиенты
особенно полезны для имитации объёма, световых эффектов и создания
глубины в векторной графике.
Радиальный градиент задаётся строкой в формате:
"r(x,y)#цвет1-цвет2-...-цветN"
r — обозначение радиального градиента
(radial).(x,y) — координаты центра градиента
относительно элемента, где 0 0 — верхний левый угол,
1 1 — нижний правый угол.#цвет1-цвет2-...-цветN —
последовательность цветов градиента, разделённых дефисом.Пример создания радиального градиента:
var s = Snap(400, 400);
var radialGrad = s.gradient("r(0.5,0.5)#ff0000-#0000ff");
var circle = s.circle(200, 200, 100);
circle.attr({ fill: radialGrad });
В этом примере создаётся радиальный градиент, центрированный в середине круга, плавно переходящий от красного к синему.
Координаты центра градиента (cx, cy) позволяют смещать
фокус цвета:
var radialGrad = s.gradient("r(0.3,0.7)#00ff00-#ffffff");
0.3 по оси X смещает центр к левому краю.0.7 по оси Y смещает центр к нижней части.Размер градиента можно изменить, используя параметр радиуса
r:
var radialGrad = s.gradient("r(0.5,0.5,0.8)#ffcc00-#000000");
Третий параметр 0.8 задаёт радиус градиента относительно
ширины или высоты элемента (Snap.svg автоматически масштабирует его
пропорционально элементу).
Радиальные градиенты могут содержать более двух цветов. Каждую остановку можно указать через дефис или с точной позицией:
var radialGrad = s.gradient("r(0.5,0.5)#ff0000:0-#00ff00:0.5-#0000ff:1");
:0, :0.5, :1 — позиции
цветовой остановки (0 — центр, 1 — край радиуса).Радиальный градиент можно применить к любому SVG-элементу:
var rect = s.rect(50, 50, 300, 200);
rect.attr({ fill: s.gradient("r(0.5,0.5)#ffff00-#ff00ff") });
var ellipse = s.ellipse(200, 200, 150, 100);
ellipse.attr({ fill: s.gradient("r(0.4,0.6)#00ffff-#ff0000") });
Snap.svg позволяет комбинировать несколько градиентов, создавая сложные визуальные эффекты:
var linear = s.gradient("l(0,0,1,1)#ffffff-#000000");
var radial = s.gradient("r(0.5,0.5)#ff0000-#0000ff");
var group = s.group();
group.add(s.rect(0, 0, 400, 200).attr({ fill: linear }));
group.add(s.circle(200, 100, 50).attr({ fill: radial }));
Snap.svg позволяет анимировать свойства градиента, создавая динамичные эффекты:
var circle = s.circle(200, 200, 100);
var grad = s.gradient("r(0.5,0.5)#ff0000-#0000ff");
circle.attr({ fill: grad });
grad.animate({ cx: 0.8, cy: 0.2 }, 2000, mina.easeinout);
cx и cy смещают центр градиента
во время анимации.animate().(0–1) задают относительное положение и масштаб, что
обеспечивает адаптивность к размерам элементов.Радиальные градиенты в Snap.svg предоставляют гибкий инструмент для создания реалистичной и динамичной графики, сочетая простоту синтаксиса с возможностью точной настройки центра, радиуса и цветовых переходов.