Snap.svg предоставляет мощные возможности для работы с векторной
графикой в браузере, включая управление формами с закругленными углами.
Основные элементы, которые поддерживают скругление углов, — это
прямоугольники (rect) и полигоны
(path). Snap.svg реализует это через атрибуты
rx и ry для прямоугольников и через построение
кривых Безье для сложных форм.
rx и
ry для прямоугольниковДля прямоугольников rect Snap.svg использует стандартные
SVG-атрибуты rx и ry:
var s = Snap(400, 400);
var rect = s.rect(50, 50, 200, 100);
rect.attr({
fill: "#3498db",
stroke: "#2c3e50",
strokeWidth: 4,
rx: 20,
ry: 20
});
Если указать только rx, значение ry
автоматически примет то же значение, и наоборот. Это упрощает создание
одинаково закругленных углов.
Snap.svg позволяет изменять скругление в любое время после создания элемента:
rect.animate({ rx: 50, ry: 50 }, 1000, mina.easeinout);
animate плавно изменяет атрибуты
rx и ry за указанное время (в
миллисекундах).mina.easeinout — стандартная кривая анимации Snap.svg,
создающая плавное ускорение и замедление.pathДля фигур, не являющихся прямоугольниками, необходимо строить скругленные углы вручную через кривые Безье. Пример для многоугольника:
var path = "M100,100 L300,100 Q320,100 320,120 L320,200 Q320,220 300,220 L100,220 Q80,220 80,200 L80,120 Q80,100 100,100 Z";
var shape = s.path(path);
shape.attr({
fill: "#e74c3c",
stroke: "#c0392b",
strokeWidth: 3
});
Q, где первый параметр задаёт контрольную точку, а
второй — конечную точку дуги.Snap.svg позволяет объединять скругление с трансформациями, такими как вращение, масштабирование и сдвиг:
rect.transform("r45,150,100 s1.5");
r45,150,100 — поворот на 45° вокруг точки (150,
100).s1.5 — масштабирование в 1.5 раза.Радиусы скругления автоматически сохраняются при трансформации, что особенно важно при анимации сложных интерфейсов.
Можно создавать динамические эффекты скругления
через функцию Snap.animate:
Snap.animate(0, 50, function(val) {
rect.attr({ rx: val, ry: val });
}, 2000, mina.elastic);
mina.elastic добавляет эффект пружины, создавая
визуально интересное скругление.Для многоугольников необходимо обновлять путь (path) на
каждом кадре анимации, изменяя контрольные точки кривых Безье.
rx или ry может визуально «съесть» форму.rx и ry
создают гармоничный вид.Snap.svg делает работу со скругленными углами простой и гибкой,
позволяя комбинировать стандартные прямоугольники и кастомные пути с
анимацией и трансформациями. Правильное использование атрибутов
rx, ry и кривых Безье открывает возможности
для создания динамических и визуально привлекательных интерфейсов.