Для начала работы с библиотекой SVG.js необходимо
создать контейнер, в котором будут размещаться все графические элементы.
Контейнер представляет собой элемент <svg> в
HTML-документе и управляется через объект SVG.Doc.
// Подключение контейнера к элементу с id 'drawing'
const draw = SVG().addTo('#drawing').size(800, 600);
SVG() – инициализация нового SVG-контейнера..addTo('#drawing') – привязка контейнера к
существующему элементу DOM..size(800, 600) – установка размеров контейнера по
ширине и высоте.Контейнер может быть привязан к любому элементу страницы, включая
div или section. Важно учитывать, что размеры
контейнера определяют пространство для рисования, а отсутствие явной
установки размеров приведет к появлению SVG с нулевыми размерами.
SVG использует собственную систему координат, в которой верхний левый
угол имеет координаты (0, 0). Для удобства масштабирования
и позиционирования элементов применяется метод
viewbox:
draw.viewbox(0, 0, 800, 600);
(0, 0) задают смещение начала
координат.(800, 600) определяют видимую
область.Использование viewbox позволяет создавать адаптивную
графику, которая корректно масштабируется при изменении размеров окна
браузера.
По умолчанию контейнер прозрачный, поэтому часто требуется задать фон:
draw.rect(800, 600).fill('#f0f0f0');
rect(800, 600) – создание прямоугольника размером с
контейнер..fill('#f0f0f0') – установка цвета заливки.Альтернативно можно использовать CSS для контейнера, но при работе с библиотекой удобнее управлять фоном через SVG-элементы, чтобы сохранять единую систему координат.
Контейнер поддерживает слои, позволяющие структурировать графику и управлять порядком отображения элементов. В SVG.js для этого используется метод group:
const backgroundLayer = draw.group();
const mainLayer = draw.group();
group() создаёт новый контейнер внутри SVG.backgroundLayer, будут
рендериться под элементами mainLayer.Использование слоёв упрощает манипуляцию объектами: можно перемещать, скрывать или изменять свойства группы сразу для всех вложенных элементов.
Для динамических интерфейсов важно, чтобы контейнер корректно изменял свои размеры при масштабировании окна. SVG.js позволяет связать размеры контейнера с размерами родительского элемента:
const draw = SVG().addTo('#drawing').size('100%', '100%');
viewbox гарантирует, что элементы будут
пропорционально масштабироваться.Простейшая структура контейнера с фоном и слоем для объектов:
const draw = SVG().addTo('#drawing').size(800, 600);
draw.viewbox(0, 0, 800, 600);
const background = draw.rect(800, 600).fill('#e0e0e0');
const objectsLayer = draw.group();
Такое разделение упрощает управление визуальными компонентами и обеспечивает чистоту структуры.
Контейнер может реагировать на события мыши и клавиатуры. Для этого используется стандартный синтаксис библиотеки:
draw.on('click', function(event) {
console.log('Клик по контейнеру', event.offsetX, event.offsetY);
});
on('click', callback) – обработка клика.event.offsetX и event.offsetY возвращают
координаты внутри контейнера.События можно назначать как на сам контейнер, так и на отдельные слои, что позволяет создавать интерактивные интерфейсы с различными уровнями вложенности.
Для контейнера доступны методы трансформации, которые позволяют масштабировать или перемещать содержимое без изменения отдельных элементов:
draw.zoom(2); // Увеличение в 2 раза
draw.pan(50, 50); // Сдвиг содержимого
zoom(factor) изменяет масштаб всех элементов.pan(x, y) смещает видимую область относительно
координат.Комбинация viewbox, zoom и pan
обеспечивает гибкое управление пространством для сложной графики.
Эффективный SVG-контейнер состоит из нескольких ключевых компонентов:
Такой подход обеспечивает удобство управления графикой, адаптивность и структурированность кода, создавая надежную основу для последующей работы с элементами SVG.