В библиотеке SVG.js управление стилями объектов реализуется через методы, которые позволяют изменять визуальные свойства примитивов SVG: цвет, прозрачность, толщину линий, тип заливки и другие атрибуты. Стили можно задавать как глобально для всего объекта, так и локально для отдельных фрагментов или групп элементов.
fill и
strokefill отвечает за заливку фигуры, а
stroke – за контур.
const draw = SVG().addTo('body').size(400, 400);
const rect = draw.rect(150, 100)
.fill('#3498db') // синий цвет заливки
.stroke({ color: '#e74c3c', width: 4 }); // красный контур толщиной 4px
fill('color') – устанавливает цвет заливки.
stroke({ color, width, opacity, linecap }) –
настраивает параметры контура:
color – цвет линии;width – толщина линии;opacity – прозрачность контура;linecap – форма концов линии ('butt',
'round', 'square').Прозрачность объекта задается через
opacity, а заливку можно комбинировать с градиентами или
паттернами.
rect.opacity(0.6); // делает прямоугольник полупрозрачным
Для градиентов используется метод gradient():
const gradient = draw.gradient('linear', function(add) {
add.stop(0, '#ff0000'); // красный
add.stop(1, '#ffff00'); // желтый
});
rect.fill(gradient);
linear) и радиальные (radial)
градиенты полностью поддерживаются.SVG.js позволяет стилизовать не только весь объект, но и отдельные
сегменты, например, части пути path.
const path = draw.path('M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80')
.fill('none')
.stroke({ color: '#2ecc71', width: 3 });
path.each(function(i, children) {
if (i % 2 === 0) {
this.stroke({ color: '#e67e22' });
}
});
each() перебирает все подэлементы пути, позволяя
назначать индивидуальные стили.Каждый элемент SVG может иметь id и
class, что облегчает группировку и
стилизацию через CSS.
rect.attr({ id: 'myRect', class: 'highlight' });
SVG('#myRect').fill('#9b59b6');
SVG('.highlight').stroke({ color: '#f1c40f', width: 2 });
attr() позволяет задавать любые стандартные атрибуты
SVG.<g>)Группировка элементов через group() упрощает массовую
стилизацию:
const group = draw.group();
const circle1 = group.circle(50).fill('#1abc9c');
const circle2 = group.circle(50).move(60, 0).fill('#e74c3c');
group.stroke({ color: '#34495e', width: 2 }); // применится ко всем элементам группы
SVG.js поддерживает динамическое изменение стилей, что полезно для интерактивных интерфейсов:
rect.on('mouseover', () => rect.fill('#f39c12'));
rect.on('mouseout', () => rect.fill('#3498db'));
mouseover, mouseout,
click и другие могут менять свойства объектов.animate():rect.animate(1000, '<>').fill('#8e44ad');
<>– тип easing анимации (<,>,<>,linear`).SVG.js позволяет настраивать внешний вид текста через
text() и цепочку методов:
const txt = draw.text('SVG.js Example')
.font({ size: 24, family: 'Arial', weight: 'bold' })
.fill('#2980b9')
.stroke({ color: '#2c3e50', width: 1 });
font() – задаёт размер, семейство, стиль и толщину
шрифта.fill() и stroke() применяются к тексту так
же, как к фигурам.Для более сложной стилизации заливки применяются паттерны:
const pattern = draw.pattern(20, 20, function(add) {
add.rect(10, 10).fill('#bdc3c7');
add.circle(5).fill('#2c3e50');
});
rect.fill(pattern);
pattern(width, height, callback).each() или группировку через
group().Каждый метод можно комбинировать для создания сложных визуальных эффектов, а контроль над отдельными фрагментами обеспечивает точность и гибкость в дизайне.