SortableJS — это легковесная и гибкая библиотека для реализации перетаскивания элементов в списках и сетках. Основной функционал строится вокруг создания интерактивных списков, где элементы можно менять местами с помощью мыши или касания на мобильных устройствах. Библиотека поддерживает работу с обычными HTML-элементами и полностью совместима с современными фреймворками, такими как React, Vue и Angular.
Для создания sortable-списка используется конструктор
Sortable:
import Sortable from 'sortablejs';
const list = document.getElementById('items');
Sortable.create(list, {
animation: 150,
ghostClass: 'sortable-ghost'
});
Ключевые параметры:
animation — скорость анимации при перетаскивании (в
миллисекундах).ghostClass — CSS-класс для отображения «призрачного»
элемента во время перемещения.handle — позволяет указать область, за которую можно
захватывать элемент для перетаскивания.draggable — селектор элементов, которые будут
перетаскиваться.SortableJS предоставляет множество событий, которые позволяют реагировать на действия пользователя:
onStart — срабатывает в момент начала
перетаскивания.onEnd — вызывается после завершения перемещения
элемента.onAdd — элемент добавлен в список из другого
sortable-списка.onUpdate — элемент изменил позицию внутри текущего
списка.onRemove — элемент удален из текущего списка.Пример использования события onEnd:
Sortable.create(list, {
animation: 150,
onEnd: (evt) => {
console.log(`Элемент перемещен с позиции ${evt.oldIndex} на ${evt.newIndex}`);
}
});
SortableJS активно используется для реализации интерактивных интерфейсов, где требуется менять порядок элементов. Например, в менеджерах задач можно динамически сортировать задачи, перемещать их между колонками или списками при помощи drag-and-drop.
Особенности применения:
Для административных интерфейсов и дашбордов часто требуется настраиваемая сетка виджетов. SortableJS позволяет:
Sortable.create(dashboard, {
group: 'widgets',
animation: 200,
handle: '.widget-header',
onAdd: (evt) => {
console.log(`Виджет перемещен в новую область`);
}
});
Интерфейсы работы с медиа-контентом часто требуют удобного перетаскивания изображений. SortableJS позволяет:
SortableJS применяется для форм, где пользователи могут добавлять или менять порядок полей:
SortableJS легко интегрируется с React, Vue и Angular:
react-sortablejs,
позволяющие управлять состоянием через props и
state.v-sortable, позволяющую
гибко связывать список с моделью данных.SortableJS поддерживает широкие возможности кастомизации:
chosenClass), для элементов при перетаскивании
(ghostClass) или для placeholder’а.filter.group элементы
могут перемещаться между несколькими списками.Пример исключения элементов из сортировки:
Sortable.create(list, {
filter: '.no-drag',
onFilter: (evt) => {
console.log('Попытка перетаскивания заблокированного элемента');
}
});
Для больших списков важно учитывать производительность:
forceFallback: true для снижения нагрузки
на мобильных устройствах.SortableJS сочетает в себе простоту и гибкость, обеспечивая широкую область применения: от простых списков задач до сложных дашбордов и динамических форм. Правильная настройка параметров и обработчиков событий позволяет создавать плавный и удобный интерфейс для пользователей любых платформ.