Как добавить режим прокрутки div при перетаскивании через край - PullRequest
0 голосов
/ 05 декабря 2018

Я использую HTML5 Drag and Drop API для реорганизации элементов в вертикальном списке.Список представляет собой overflow-y: scroll div.В macOS Chrome и macOS Firefox, если элемент перетаскивается очень близко (~ 20 пикселей) к внутреннему краю контейнера, контейнер прокручивается.Такое поведение отсутствует в macOS Safari.

JSFiddle Demo

Меня интересует, как реализовать модифицированную версию этого поведения для всех современных браузеров:

  • Как увеличить область активации прокрутки.В MacOS Chrome он должен быть внутри контейнера и относительно небольшой (20 пикселей).Предпочтительно его можно увеличить до 15% от высоты контейнера.
  • Предпочтительно, чтобы область оставалась внутри списка (поэтому, если вы прокручиваете вне списка, контейнер не прокручивается)
  • Как отключить явно недокументированное поведение прокрутки Chrome.(Предполагается, что невозможно включить эту функцию в Safari, Edge).

Ограничения:

  • Приемлемо необработанное решение JavaScript / html / css
  • Я использую React, поэтому библиотека React, которая работает с необработанным JS HTML5 Drag n Drop, также будет приемлемой
  • Нет jQuery

Редактировать: Обновлено описание поддержки браузера, обновил JSFiddle для поддержки macOS Firefox.

...