AutoScroll — это встроенная функция библиотеки SortableJS, которая позволяет автоматически прокручивать контейнеры при перетаскивании элементов к их границам. Она особенно полезна при работе с длинными списками или элементами внутри прокручиваемых контейнеров. Без этой функции пользователь столкнулся бы с ограничением видимой области и невозможностью перемещать элементы за пределы текущего видимого пространства.
AutoScroll активируется автоматически при перетаскивании элемента к границам контейнера или окна браузера. Библиотека отслеживает позицию курсора относительно контейнера и запускает прокрутку в направлении, где курсор находится ближе к границе.
При активации AutoScroll создается плавное движение, предотвращающее резкие «скачки» элементов и обеспечивающее удобство перетаскивания.
Настройка происходит через объект options при
инициализации Sortable. Ключевые параметры:
new Sortable(container, {
group: "shared",
animation: 150,
scroll: true,
scrollSensitivity: 30,
scrollSpeed: 10,
bubbleScroll: true
});
Описание параметров:
scroll — включает или отключает автоматическую
прокрутку. Значение true активирует стандартный
механизм.scrollSensitivity — определяет, на каком расстоянии от
границы контейнера начнется прокрутка. Чем меньше значение, тем ближе к
границе курсор должен находиться.scrollSpeed — скорость прокрутки в пикселях за один шаг
анимации. Высокие значения ускоряют прокрутку, низкие делают её более
плавной.bubbleScroll — позволяет прокручивать родительские
контейнеры, если вложенный контейнер достиг границы. Полезно для
многоуровневых интерфейсов с вложенными списками.new Sortable(document.body, {
animation: 150,
scroll: true,
scrollSensitivity: 50,
scrollSpeed: 20
});
scrollSensitivity в 50 пикселей обеспечивает
раннее начало прокрутки, предотвращая «залипание» курсора.const list = document.getElementById('scrollable-list');
new Sortable(list, {
animation: 200,
scroll: true,
scrollSensitivity: 40,
scrollSpeed: 15
});
animation сглаживает перемещение элементов
внутри контейнера.new Sortable(nestedList, {
scroll: true,
scrollSensitivity: 30,
scrollSpeed: 12,
bubbleScroll: true
});
scrollSensitivity могут создавать нагрузку на
рендеринг, особенно при больших списках. Оптимальные значения зависят от
размера элементов и контейнера.overflow: auto или scroll. Прокрутка без этих
свойств невозможна.onMove, onEnd и другие для динамического
контроля поведения при автоскролле. Например, отключить прокрутку в
определенных случаях или изменить направление.scrollSensitivity у края. Это позволяет запускать
прокрутку только при необходимости.scrollSpeed. При остановке курсора на месте
интервал прекращается.scrollSensitivity, автоскролл автоматически
останавливается, предотвращая бесконечное движение контейнера.animation, что исключает
рассинхронизацию движения элемента и контейнера.scrollSensitivity от 30 до 50 пикселей, а
scrollSpeed 10–15 для комфортной прокрутки.bubbleScroll.AutoScroll в SortableJS обеспечивает гибкость при работе с длинными и вложенными списками, делает интерфейс интуитивно понятным и поддерживает плавное перемещение элементов без ограничений видимой области. Точная настройка параметров позволяет адаптировать поведение к любому типу интерфейса.