Атрибут draggable тега <button>


Описание

Атрибут draggable определяет, можно ли перетаскивать кнопку с помощью Drag and Drop API. Хотя кнопки редко делают перетаскиваемыми, этот атрибут может быть полезен для создания нестандартных интерфейсов.

Пример использования:
<button draggable="true" ondragstart="dragStart(event)"> Перетащи меня </button> <script> function dragStart(e) { e.dataTransfer.setData('text/plain', 'Кнопка перемещена'); } </script>
Значение Поведение Применение
true Элемент можно перетаскивать Для drag-and-drop интерфейсов
false Элемент нельзя перетаскивать (по умолчанию) Обычные кнопки
auto Определяется браузером Редко используется

Полный пример Drag-and-Drop:

<button id="drag-btn" draggable="true" ondragstart="dragStart(event)" > Перетащи меня в зону </button> <div id="drop-zone" ondragover="allowDrop(event)" ondrop="drop(event)" > Зона сброса </div> <script> function dragStart(e) { e.dataTransfer.setData('text', e.target.id); } function allowDrop(e) { e.preventDefault(); } function drop(e) { e.preventDefault(); const data = e.dataTransfer.getData('text'); e.target.appendChild(document.getElementById(data)); } </script> <style> #drop-zone { width: 200px; height: 100px; border: 2px dashed #ccc; margin-top: 20px; padding: 10px; } </style>

Особенности работы:

  • Требует JavaScript-обработчиков для dragstart, dragover и drop
  • По умолчанию кнопки не являются перетаскиваемыми
  • Может конфликтовать с обработчиками кликов
  • Для сложного поведения используйте специализированные библиотеки

Рекомендации:

  • Добавляйте визуальные подсказки для перетаскиваемых элементов
  • Используйте dataTransfer для передачи данных
  • Тестируйте на мобильных устройствах (требуют особого подхода)
  • Рассмотрите альтернативы для важных действий

Примечание: Хотя технически возможно сделать кнопку перетаскиваемой, стандартные элементы форм редко используют эту функциональность. Лучше применять draggable для специальных элементов интерфейса.