SortableJS — это лёгкая и гибкая библиотека для реализации
drag-and-drop функционала в веб-приложениях. Она позволяет переставлять
элементы внутри контейнера, а также между различными списками, сохраняя
состояние и предоставляя удобные хуки для обработки событий. Одними из
ключевых параметров являются draggable и
ghostClass, которые определяют поведение перетаскиваемых
элементов и визуальные эффекты.
draggableНазначение: определяет, какие элементы внутри контейнера могут быть перетаскиваемыми.
Синтаксис:
draggable: '.className'
Описание работы:
Примеры использования:
new Sortable(document.getElementById('list'), {
draggable: 'li.item'
});
В этом примере только элементы с классом
item будут перетаскиваемыми. Элементы без этого класса
останутся статичными.
Особенности:
draggable не указан, по умолчанию все дочерние
элементы контейнера становятся перетаскиваемыми.handle для задания
зоны захвата, чтобы элемент был перетаскиваемым только за определённую
область.new Sortable(list, {
draggable: 'li',
handle: '.handle'
});
Здесь элементы можно двигать только за
элементы с классом .handle.
ghostClassНазначение: задаёт CSS-класс для визуального отображения элемента во время перетаскивания.
Синтаксис:
ghostClass: 'custom-ghost'
Описание работы:
ghostClass применяет указанный CSS-класс к копии
элемента, которая следует за курсором.Пример использования с кастомным стилем:
new Sortable(list, {
draggable: 'li',
ghostClass: 'ghost'
});
.ghost {
opacity: 0.5;
border: 2px dashed #999;
background-color: #f0f0f0;
}
В данном примере перетаскиваемый элемент становится полупрозрачным с рамкой, что облегчает визуальное восприятие перемещения.
Особенности:
ghostClass не изменяет сам оригинальный элемент, а
только его визуальное представление в процессе drag-and-drop.chosenClass и
dragClass, которые выделяют выбранный элемент или сам
объект во время перетаскивания.draggable и ghostClassЭти два параметра тесно связаны: draggable определяет,
что может быть перетащено, а ghostClass — как это
перетаскивание визуализируется.
Пример комплексной настройки:
new Sortable(document.getElementById('tasks'), {
draggable: '.task',
ghostClass: 'dragging',
handle: '.task-handle'
});
.task перетаскиваемы..dragging, применяя к нему полупрозрачность и рамку..task-handle.Рекомендации по использованию:
draggable, чтобы избежать случайного
перетаскивания контейнеров или вложенных элементов.ghostClass следует использовать для улучшения UX,
особенно если перетаскивание затрагивает важные данные.ghostClass, чтобы движение выглядело
плавным.draggable и
ghostClass для каждого.onStart, onEnd,
onAdd, onUpdate позволяют выполнять кастомные
действия при начале, окончании или перемещении элементов.ghostClass корректно отображает элемент даже при
тач-событиях.