Назад в блог

Создание элементов Drag and Drop на чистом, ванильном JavaScript

Создание элементов Drag and Drop на чистом, ванильном JavaScript

JavaScript — один из самых популярных языков программирования, поддерживающий более 24 фреймворков и около 84 библиотек. Это единственный язык программирования, изначально поддерживаемый всеми браузерами. Кроме того, язык поддерживает динамическую типизацию и отлично подходит для рендеринга и анимации. Вы можете использовать JavaScript для добавления интерактивного поведения во фронтенде, управления бэкендом, создания веб- и мобильных приложений и многого другого. Возможность добавлять эффекты на любой веб-сайт и делать его настраиваемым делает этот язык фаворитом среди разработчиков по всему миру.

В этом руководстве мы подробно рассмотрим шаги по созданию элементов drag-and-drop с использованием чистого Vanilla JavaScript. Кроме того, мы сделаем еще один шаг вперед и создадим приложение «Morning Scheduler», используя HTML Drag and Drop API обработчики событий.

Предварительные требования

Чтобы следовать этому руководству, вам понадобятся:

  • Базовые знания JavaScript.
  • Понимание HTML и CSS будет большим преимуществом.

Шаг 1. Создание нового проекта

Начните с создания контейнера с двумя дочерними элементами. Мы будем использовать первый дочерний элемент для перетаскивания, а второй — для хранения перетаскиваемых элементов.

Примечание: В этом руководстве мы будем рассматривать контейнеры как хранилище для всех перетаскиваемых элементов. Проще говоря, все элементы, перетаскиваемые из первого дочернего элемента, будут сбрасываться во второй.

Затем используйте команду cd, чтобы перейти в папку drag-and-drop-demo :

Шаг 2. Начальная настройка

В этом руководстве мы создадим файлы HTML, CSS и JavaScript и свяжем их. Сначала назовите файлы index.html, styles.css, и scripts.js соответственно.

Затем добавьте заголовок «My Morning Planner» в файл index.html :

Затем подключите CSS и добавьте JavaScript в HTML:

Теперь мы создадим исходный контейнер и добавим элемент, который хотим перетаскивать. Обязательно установите атрибут draggable="true", и добавьте список элементов, которые вы хотите перетаскивать.

Затем добавьте следующие строки кода в <body> тегах:

Сохраните и закройте файл index.html. После этого попробуйте открыть файл index.html в вашем браузере, и вы увидите открывшуюся страницу:

Далее давайте стилизуем наш index.html  с помощью CSS, чтобы придать ему презентабельный вид.

Шаг 3. Стилизация с помощью CSS

Затем добавьте стили для всех элементов, которые мы включили в наш файл index.html :

Попробуйте открыть файл index.html в вашем браузере и посмотрите на результат:

Creating Drag and Drop Elements with Pure, Vanilla JavaScript 1

Хотя мы завершили структурирование и добавили стили, элементы все еще остаются статичными. Это означает, что мы не можем перемещать или прокручивать элементы, пока не добавим к ним динамические функции. На следующем шаге мы подключим JavaScript и динамическое поведение.

Шаг 4. Знакомство с JavaScript

На этом шаге мы добавим JavaScript и сделаем все перетаскиваемые элементы функциональными. В JS-файле задайте элементы, которые нам понадобятся. Давайте определим draggable и containers для перетаскивания и сброса элементов соответственно.

Добавьте две строки кода в scripts.js файл:

Затем настройте все слушатели событий. Начните с добавления элемента dragstart в качестве первого слушателя событий, чтобы добавить класс. Аналогично, добавьте элемент dragend в качестве второго слушателя событий, чтобы удалить класс.

Добавьте следующие EventListeners в ваш scripts.js файл:

Затем добавьте dragover EventListener для отслеживания наведения и перемещения наших элементов. Задайте текущий draggable элемент с помощью querySelector и затем добавьте перетаскиваемый элемент в текущий контейнер:

По умолчанию сброс элементов внутрь другого элемента отключен. Используйте e.preventDefault, чтобы включить его:

Затем создайте элемент для определения положения мыши. Начните с создания функции getDragAfterElement, которая будет принимать два параметра. Первым будет container, а второй параметр y будет отвечать за вертикальное положение мыши. Теперь используйте функцию querySelectorAll, чтобы получить наши перетаскиваемые элементы. Определите draggableElements для всех перетаскиваемых элементов внутри контейнера:

Затем вызовите функцию reduce, которая переберет список перетаскиваемых элементов, а также определит единственный элемент, находящийся сразу за курсором мыши. Затем верните результат функции reduce, добавив первый элемент как closest и второй как child. Также приравняйте offset и добавьте условия.

Добавьте следующие строки кода в scripts.js файл:

// … В последней части мы зададим условия и проверим AfterElements. Проверьте AfterElements с помощью if-else условий, и если оно равно null, добавьте дочерний элемент в конец списка с помощью appendChild. В противном случае добавьте элемент draggable и afterElement в качестве параметров в insertBefore функцию.

Включите это в scripts.js файл:

Теперь у нас есть все необходимые настройки. Откройте браузер и запустите index.html в вашем браузере. Вы увидите страницу «My Morning Scheduler» с возможностью перетаскивания. Белая линия посередине служит мостом для разделения уже выполненных задач и тех, которые еще предстоит выполнить:

Заключение

Drag and Drop — отличная функция для использования на современных веб-сайтах. В этом руководстве мы использовали несколько обработчиков событий, чтобы сделать его простым для начинающих. Всего существует восемь обработчиков событий, и мы рекомендуем вам использовать их по мере продвижения. Как только вы освоите функции и код, используемые в этом руководстве, вы сможете глубже погрузиться в такие темы JavaScript, как jQuery и начать изучение. Вы также можете попробовать создать приложение To-Do, трекер еженедельного прогресса с использованием функций даты и времени JavaScript, и другие приложения, используя только что изученные концепции.

Чтобы узнать больше о JavaScript и веб-разработке, ознакомьтесь с этими ресурсами в нашем блоге:

Приятной работы!

author

Shreyas Patil

Автор · CloudSigma

Preslav Dobrev — креативный дизайнер в CloudSigma, сосредоточенный на формировании последовательного корпоративного образа с помощью традиционных и инновационных маркетинговых каналов. Он умело сочетает художественное видение со стратегическим маркетингом, создавая убедительные истории бренда.

Комментарии

Комментариев пока нет. Будьте первым.