В библиотеке Dragula объект gu-transit
играет ключевую роль в процессе визуального перемещения элементов между
контейнерами. Этот элемент создается динамически при начале
перетаскивания и служит визуальным представлением
элемента, который пользователь перемещает. Он обеспечивает
плавность интерфейса и отделяет исходный DOM-элемент от его визуальной
копии во время операции drag-and-drop.
gu-transitКогда пользователь инициирует перетаскивание, Dragula автоматически выполняет следующие действия:
gu-transit.Ключевые особенности gu-transit:
position: absolute, pointer-events: none,
чтобы элемент можно было перемещать без блокировки событий.gu-transit может пересекать границы контейнеров, что
позволяет создавать визуальный эффект перетаскивания между списками или
панелями.gu-transit через Dragula APIВ Dragula есть события, которые позволяют контролировать появление и
удаление gu-transit:
drag — срабатывает в момент начала
перетаскивания. Внутри обработчика можно изменить стили
gu-transit:drake.on('drag', function(el, source) {
const transit = document.querySelector('.gu-transit');
transit.style.boxShadow = '0 5px 15px rgba(0,0,0,0.3)';
});
cloned — срабатывает, когда элемент
дублируется для gu-transit. Позволяет подменять содержимое
копии или применять дополнительные классы.dragend — удаляет
gu-transit из DOM после завершения операции. Это ключевой
момент: оригинальный элемент возвращается в контейнер, либо перемещается
в новый, а временная копия исчезает.gu-transit не является полноценной заменой
перетаскиваемого элемента — это временный визуальный
индикатор. Его свойства и поведение определяются исключительно
Dragula, но возможно взаимодействие с ним через DOM:
const transit = document.querySelector('.gu-transit');
const rect = transit.getBoundingClientRect();
console.log(rect.top, rect.left);
transit.style.transform = 'scale(1.05)';
transit.style.opacity = '0.8';
gu-transit позволяет добавлять CSS-переходы для плавного
перемещения. Например, можно использовать
transition: all 0.2s ease-in-out; для сглаживания
движения.gu-transit для создания визуальной
подсказки, например, отображать количество выбранных элементов при
групповой перетаскивании.gu-transit всегда
размещается поверх других элементов. Управление z-index
позволяет обеспечить корректное наложение поверх модальных окон или
других UI-элементов.drake.on('drag', function(el) {
el.style.opacity = '0.5';
});
drake.on('dragend', function(el) {
el.style.opacity = '1';
});
gu-transit для
имитации увеличения при перемещении:drake.on('drag', function(el) {
const transit = document.querySelector('.gu-transit');
transit.style.transform = 'scale(1.1)';
});
drake.on('over', function(el, container) {
const transit = document.querySelector('.gu-transit');
transit.style.backgroundColor = 'lightblue';
});
gu-transit является важным инструментом для создания
интерактивных и визуально привлекательных интерфейсов с
помощью Dragula. Его правильное использование позволяет отделять
визуальную часть перетаскивания от реального DOM, улучшая отзывчивость и
гибкость работы с элементами.