В библиотеке Snap.svg для работы с векторной графикой часто используются два механизма ограничения отображения объектов: маски (mask) и обрезка (clipping, clipPath). Оба инструмента позволяют скрывать части элементов, но работают по-разному и имеют разные возможности.
Маска определяет, какая часть объекта будет видимой на основе
яркости маскирующего элемента. В Snap.svg маска
создается с помощью метода .mask(). Основные моменты:
Пример создания маски:
var s = Snap("#svg");
// Основной объект
var circle = s.circle(150, 150, 100).attr({fill: "red"});
// Маска: градиент от черного к белому
var mask = s.rect(50, 50, 200, 200).attr({fill: "url(#grad)"});
// Применение маски
circle.attr({mask: mask});
В этом примере видимость круга регулируется градиентом. Важно: маска учитывает яркость элементов, что дает возможность создавать плавные прозрачные эффекты.
Clipping ограничивает видимую область объекта геометрической фигурой.
В Snap.svg используется метод .clip(). Основные
особенности:
Пример использования clipPath:
var s = Snap("#svg");
// Основной объект
var rect = s.rect(0, 0, 300, 300).attr({fill: "blue"});
// Форма обрезки
var clip = s.circle(150, 150, 100);
// Применение clipPath
rect.attr({clip: clip});
В результате видимой будет только часть прямоугольника, попавшая внутрь круга.
| Параметр | Маска (mask) | Clipping (clipPath) |
|---|---|---|
| Основа | Яркость элементов маски | Контур формы |
| Плавность переходов | Есть (градиенты, полупрозрачность) | Нет, только чёткие границы |
| Цвет маски | Влияет на видимость | Не влияет |
| Сложные формы | Возможны с градиентами | Работают как геометрическая обрезка |
| Прозрачность исходного объекта | Может сочетаться с маской | Скрывает полностью, прозрачность не учитывается |
Оба механизма взаимодействуют с трансформациями элементов (translate, rotate, scale), но есть нюансы:
Эти различия делают Snap.svg гибким инструментом для работы с визуальными эффектами в SVG. Правильное понимание работы масок и обрезки позволяет создавать как строго структурированные композиции, так и мягкие динамические визуальные эффекты.