SVG.js предоставляет мощный и интуитивно понятный интерфейс для создания и управления градиентами. Градиенты в SVG.js делятся на линейные и радиальные, и оба типа позволяют создавать плавные переходы цветов с высокой степенью контроля.
Линейный градиент представляет собой плавный переход цветов вдоль
прямой линии. В SVG.js его создание осуществляется через метод
gradient('linear', callback), где callback
задаёт цветовые остановки и параметры градиента.
Пример создания линейного градиента:
const draw = SVG().addTo('body').size(400, 400);
const linearGradient = draw.gradient('linear', function(add) {
add.stop(0, '#ff0000'); // начало градиента (0%)
add.stop(1, '#0000ff'); // конец градиента (100%)
});
// Применение градиента к прямоугольнику
draw.rect(200, 200).fill(linearGradient);
Ключевые моменты при работе с линейными градиентами:
add.stop(offset, color, opacity) — добавляет
цветовую остановку.
offset — позиция градиента от 0 до 1.color — цвет остановки в любом формате, поддерживаемом
SVG.opacity — необязательный параметр прозрачности.Направление градиента задаётся атрибутами x1,
y1, x2, y2. По умолчанию линейный
градиент идёт слева направо (0,0 → 1,0):
linearGradient.from(0, 0).to(1, 1); // диагональный градиент
Радиальный градиент создаёт переход цветов от центра к периферии. В
SVG.js радиальные градиенты создаются аналогично линейным, но с
использованием gradient('radial', callback).
Пример радиального градиента:
const radialGradient = draw.gradient('radial', function(add) {
add.stop(0, '#ffff00'); // центр
add.stop(1, '#ff00ff'); // края
});
// Применение к кругу
draw.circle(200).fill(radialGradient).move(100, 100);
Особенности радиальных градиентов:
cx, cy, r задают
центр и радиус градиента. По умолчанию центр (0.5, 0.5) и
радиус 0.5 (50% от размера объекта).gradient.transform().radialGradient.stop(0, '#ffffff', 0.5); // полупрозрачный центр
SVG.js поддерживает трансформацию градиентов без изменения фигуры:
gradient.rotate(angle) — поворот градиента на угол в
градусах.gradient.scale(sx, sy) — масштабирование градиента по
осям X и Y.gradient.translate(dx, dy) — смещение градиента
относительно фигуры.Пример применения трансформаций:
linearGradient.rotate(45).scale(2, 1).translate(0.1, 0.2);
draw.rect(200, 200).fill(linearGradient);
SVG.js позволяет анимировать градиенты для создания динамических визуальных эффектов. Основные подходы:
linearGradient.stop(0).animate(2000, '<>').attr({ offset: 1 });
linearGradient.animate(3000).rotate(360);
radialGradient.stop(1).animate(1000, '>').attr({ opacity: 0 });
Комбинация этих методов позволяет создавать сложные и интерактивные визуальные эффекты.
Градиенты можно создавать один раз и использовать многократно:
const multiGradient = draw.gradient('linear', add => {
add.stop(0, '#00ff00');
add.stop(1, '#0000ff');
});
draw.rect(100, 100).fill(multiGradient);
draw.circle(50).fill(multiGradient);
Градиенты можно комбинировать с другими методами заливки SVG.js:
mask) и
клиппинг (clip) для создания сложных форм
с градиентной заливкой.opacity) для наложения
нескольких градиентов.filter) для создания
свечения, размытия и других эффектов.Пример смешивания градиента с маской:
const mask = draw.rect(200, 200).fill('#fff');
const gradient = draw.gradient('radial', add => {
add.stop(0, '#ff0000');
add.stop(1, '#000000');
});
draw.rect(200, 200).fill(gradient).maskWith(mask);
from(x1, y1).to(x2, y2).Градиенты в SVG.js обеспечивают гибкость и контроль над визуальными эффектами. Мощные методы трансформации, анимации и повторного использования позволяют создавать сложные, динамичные и эстетически выразительные графические элементы в веб-интерфейсах.