Прозрачность объектов в SVG.js управляется с помощью свойства
opacity. Оно принимает числовое значение от
0 (полностью прозрачный) до 1
(полностью непрозрачный). Для изменения прозрачности элемента
используется метод opacity(value):
const draw = SVG().addTo('body').size(300, 300);
const circle = draw.circle(100).fill('red').move(50, 50);
circle.opacity(0.5); // полупрозрачный круг
Метод opacity() можно вызывать как для одиночного
элемента, так и для групп (<g>), что позволяет
задавать прозрачность сразу для нескольких объектов. Прозрачность
применяется на уровне элемента, то есть дочерние
элементы наследуют визуальный эффект родителя, если они находятся внутри
группы.
const group = draw.group();
group.add(draw.rect(100, 100).fill('blue'));
group.add(draw.circle(50).fill('yellow').move(25, 25));
group.opacity(0.3); // вся группа становится полупрозрачной
Для анимации прозрачности используется метод animate()
совместно с opacity():
circle.animate(1000).opacity(0); // плавное исчезновение
SVG.js поддерживает различные режимы наложения элементов, которые
управляют тем, как цвета объектов взаимодействуют между собой. Режим
наложения задаётся через метод fill() или через CSS
свойство mix-blend-mode:
const rect1 = draw.rect(150, 150).fill('red').move(50, 50);
const rect2 = draw.rect(150, 150).fill('blue').move(100, 100);
rect2.css('mix-blend-mode', 'multiply'); // цвета смешиваются с нижним элементом
Основные режимы наложения:
normal – стандартное наложение без смешиванияmultiply – умножение цветов, результат темнееscreen – осветление, противоположность
multiplyoverlay – комбинированный эффект затемнения и
осветленияdarken / lighten – выбирает темный или
светлый цветcolor-dodge / color-burn – интенсивное
осветление или затемнениеИспользование режимов наложения позволяет создавать сложные визуальные эффекты без необходимости редактировать пиксели вручную. Режимы могут применяться как к отдельным элементам, так и к группам, что обеспечивает единообразие визуального стиля:
const group = draw.group();
group.add(draw.rect(100, 100).fill('green'));
group.add(draw.circle(80).fill('orange').move(10, 10));
group.css('mix-blend-mode', 'overlay'); // все элементы группы будут смешиваться
Наиболее выразительные эффекты достигаются при совместном использовании прозрачности и режимов наложения. Прозрачность задаёт уровень видимости элемента, а режим наложения определяет способ смешивания цветов с объектами под ним:
const bg = draw.rect(200, 200).fill('purple');
const fg = draw.circle(150).fill('yellow').move(25, 25);
fg.opacity(0.6);
fg.css('mix-blend-mode', 'multiply'); // желтый круг становится зеленым при наложении на фиолетовый фон
Важно помнить, что режимы наложения работают только на
видимых пикселях. Если элемент полностью прозрачный
(opacity(0)), эффекта смешивания не будет.
SVG.js позволяет создавать динамические эффекты с плавной анимацией
прозрачности и смешивания цветов. Для этого комбинируются методы
animate(), opacity() и CSS-свойства:
const circle = draw.circle(100).fill('red').move(50, 50).opacity(0.2);
circle.animate(2000, '<>').opacity(1).loop(true, true); // пульсирующий эффект
circle.css('mix-blend-mode', 'screen'); // плавное осветление при наложении
Параметр loop(true, true) делает анимацию цикличной с
возвратом к исходному состоянию, что удобно для визуализации переходов
прозрачности.
opacity и
mix-blend-mode позволяет добиваться плавного перехода
цветов без создания дополнительных слоев.animate() с
корректными easing-функциями (<>, <, >, linear)
для более естественных визуальных эффектов.Эти инструменты дают полный контроль над визуальными слоями, позволяя создавать сложные графические композиции и динамические эффекты в интерактивных приложениях на SVG.js.