назад до уроку

Розставте супергероїв полем

важливість: 5

У цьому завданні ви можете перевірити своє розуміння відразу декількох аспектів Drag’n’Drop і DOM.

Зробіть так, щоб елементи з класом draggable – можна було переносити мишкою. Як м’яч в цьому розділі.

Вимоги до реалізації:

  • Використовуйте делегування подій для відстеження початку перетягування: тільки один обробник подій mousedown на document.
  • Якщо елементи підносять до верхньої/нижньої межі вікна – вікно повинне прокручуватися вгору/вниз, щоб дозволити подальше перетягування.
  • Горизонтальна прокрутка відсутня (трохи спрощує завдання, її просто додати).
  • Елемент при перенесенні, навіть при різких рухах мишкою, не повинен навіть частково потрапити поза вікно.

Демо занадто велике для розміщення тут, перейдіть за посиланням нижче.

Демонстрація в новому вікні

Відкрити пісочницю для завдання.

Щоб перетягнути елемент, ми можемо використовувати position: fixed, це робить управління координатами простішим. Після завершення слід переключитися назад на position: absolute, щоб елемент залишився частиною сторінки.

Коли координати знаходяться у верхній/нижній частині вікна, ми використовуємо window.scrollTo для прокрутки.

Деталі рішення розписані в коментарях у коді.

Відкрити рішення в пісочниці.