Gridstack.js использует систему сетки на основе CSS и JavaScript для динамического управления элементами. Каждый виджет внутри сетки имеет базовые стили, которые задаются как через CSS-файлы библиотеки, так и через встроенные атрибуты и свойства. Для гибкой кастомизации необходимо понимать, какие элементы и классы можно переопределять и каким образом это влияет на поведение сетки.
Основные CSS-классы:
.grid-stack — контейнер сетки. Отвечает за общие
размеры, позиционирование и overflow..grid-stack-item — отдельный элемент сетки.
Используется для задания ширины, высоты, отступов и визуальных
эффектов..grid-stack-item-content — внутренний контейнер
элемента. Обычно используется для стилизации контента виджета, например,
фона или рамки.Атрибуты для управления поведением:
gs-x, gs-y — позиция элемента на
сетке.gs-width, gs-height — размер элемента в
ячейках сетки.gs-auto-position — автоматическое позиционирование при
добавлении нового виджета.Эти атрибуты можно использовать для динамического изменения размеров и позиций элементов через JavaScript, но для изменения внешнего вида предпочтительно использовать CSS и кастомные классы.
Gridstack.js поставляется с базовым CSS, который можно полностью переопределять:
/* Переопределение фона и границы виджета */
.grid-stack-item-content {
background-color: #f0f0f0;
border: 2px solid #3498db;
border-radius: 8px;
}
/* Переопределение отступов между элементами сетки */
.grid-stack {
grid-gap: 12px;
}
Ключевые моменты:
!important применять только в крайних случаях,
чтобы избежать неожиданного поведения.@media) для изменения размеров и отступов на разных
разрешениях.Gridstack.js позволяет изменять классы и стили элементов на лету:
const grid = GridStack.init();
grid.addWidget('Контент', {width: 3, height: 2});
const widget = document.querySelector('.grid-stack-item-content');
widget.style.backgroundColor = '#ffcc00';
widget.classList.add('custom-widget-style');
Особенности:
Для более сложного переопределения удобно создавать отдельные темы:
.gridstack-theme-dark .grid-stack-item-content {
background-color: #2c3e50;
color: #ecf0f1;
border: 1px solid #34495e;
}
.gridstack-theme-light .grid-stack-item-content {
background-color: #ffffff;
color: #2c3e50;
border: 1px solid #bdc3c7;
}
const gridContainer = document.querySelector('.grid-stack');
gridContainer.classList.add('gridstack-theme-dark');
Преимущества использования тем:
Gridstack.js использует CSS-транзишны для плавного перемещения и изменения размеров виджетов. Их можно кастомизировать:
.grid-stack-item {
transition: all 0.3s ease-in-out;
}
.grid-stack-item.moving {
box-shadow: 0 4px 12px rgba(0,0,0,0.2);
}
.moving применяется автоматически при
перетаскивании.Такой подход обеспечивает полный контроль над визуальной частью сетки и позволяет создавать сложные, адаптивные интерфейсы без изменения внутренней логики Gridstack.js.