<header>
  <h2 class="title">Event - dragstart</h2>
  <p class="description">Активується при початку перетягування елемента, дозволяючи задати переносимі дані.</p>
</header>
<main>
  <div class="result">
    <!-- Блоки, які можна перетягувати -->
    <div class="draggable-container">
      <div class="draggable" draggable="true" data-color="red">Червоний</div>
      <div class="draggable" draggable="true" data-color="blue">Синій</div>
      <div class="draggable" draggable="true" data-color="green">Зелений</div>
    </div>
    <!-- Зона призначення -->
    <div class="drop-zone">Перетягніть елементи сюди</div>
    <p id="drop-message"></p>
  </div>
</main>
body {
  font-size: 16px;
  line-height: 1.5;
  font-family: monospace;
}

header {
  background-color: #f1f1f1;
  margin-bottom: 25px;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

header h2.title {
  padding-bottom: 15px;
  border-bottom: 1px solid #999;
}

header p.description {
  font-style: italic;
  color: #222;
}

.result {
  background-color: #f8f8f8;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

.draggable-container {
  display: flex;
  gap: 10px;
  margin-bottom: 20px;
}

.draggable {
  padding: 10px;
  background-color: #ddd;
  border: 1px solid #999;
  cursor: mov
const draggables = document.querySelectorAll('.draggable');
const dropZone = document.querySelector('.drop-zone');
const dropMessage = document.getElementById('drop-message');

// Додаємо подію dragstart для кожного елемента
draggables.forEach(draggable => {
  draggable.addEventListener('dragstart', (event) => {
    event.dataTransfer.setData('text/plain', event.target.dataset.color);
    event.target.classList.add('dragging');
  });
});

// Слухаємо події dragover та drop на зоні призначення
dropZone.addEventListener('dragover', (event) => {
  event.preventDefault(); // Дозволяємо перетягування в зону
  dropZone.classList.add('highlight');
});

dropZone.addEventListener('dragleave', () => {
  dropZone.classList.remove('highlight');
});

dropZone.addEventListener('drop', (event) => {
  event.preventDefault();
  const color = event.dataTransfer.getData('text/plain'); // Отримуємо дані з dragstart
  dropZone.classList.remove('highlight');
  dropMessage.textContent = `Ви перенесли ${color} елемент!`;
});

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.