Показать сообщение отдельно
  #4 (permalink)  
Старый 23.06.2018, 23:48
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

А так тоже работает и без jquery) Drag and Drop API
<style>
div {
    width: 40px;
    height: 40px;
    display: inline-block;
    vertical-align: middle;
}
.drag {
    background: #555;
}
.drag.active {
    opacity: 0.5;
}
.drop {
    border: 1px dashed #000;
}
.drop.active {
    background: #ccc;
}
</style>
  
<div class="drop"></div>
<div class="drop"></div>
<div class="drop"></div>
<div class="drop"></div>
<div class="drop"></div>
<div class="drop"></div>

<div class="drag" draggable="true"></div>
<div class="drag" draggable="true"></div>
<div class="drag" draggable="true"></div>

<script>
var dragged;
// Required: attribute 'draggable', events 'dragstart', 'dragover', 'drop'
document.addEventListener('dragstart', function (e) {
    e.dataTransfer.setData('text', '');
    e.dataTransfer.effectAllowed = 'move';
    dragged = e.target;
    e.target.classList.add('active');
});
document.addEventListener('dragend', function (e) {
    e.target.classList.remove('active');
});
document.addEventListener('dragenter', function (e) {
    if (e.target.classList && e.target.classList.contains('drop')) {
        e.target.classList.add('active');
    }
});
document.addEventListener('dragleave', function (e) {
    if (e.target.classList && e.target.classList.contains('drop')) {
        e.target.classList.remove('active');
    }
});
document.addEventListener('dragover', function (e) {
    e.preventDefault();
    e.dataTransfer.dropEffect = 'move';
});
document.addEventListener('drop', function (e) {
    e.preventDefault();
    if (e.target.classList.contains('drop')) {
        e.target.classList.remove('active');
        e.target.appendChild(dragged);
    }
});
</script>

Продолжение)

Последний раз редактировалось Rise, 26.06.2018 в 17:45.
Ответить с цитированием