1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
| <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Exemple de Drag and drop sans le Drop !</title>
<meta name="Author" content="NoSmoking">
<style>
html,
body {
height: 2000px;
margin: 0;
font: 1em/1.5em Verdana;
}
#main {
margin: auto;
max-width: 60em;
}
[draggable=true] {
cursor: move;
}
#btn_create {
display: block;
font: 1em/2.5em Verdana;
}
.elem-new {
display: block;
position: absolute;
top: 40%;
left: 40%;
margin: 0;
padding: 0.25em 0.5em;
border: 1px solid #abc;
line-height: 2.5em;
white-space: nowrap;
word-break: normal;
background: #fff;
box-shadow: 0 0 10px #abc inset;
}
</style>
<body>
<div id="main">
<div class="header">
<h1>Exemple de Drag sans le Drop !</h1>
</div>
<div class="section">
<p>
<button id="btn_create">Création élément</button>
</p>
</div>
</div>
</div>
<script>
var handleDragStart = function (e) {
var oElem = e.target;
// position initiale de l'élément
oElem.originalX = e.screenX;
oElem.originalY = e.screenY;
oElem.id = 'move_encours';
e.dataTransfer.effectAllowed = 'move';
e.dataTransfer.setData('Text', oElem.id);
};
var handleDragEnd = function (e) {
var oElem = e.target;
// on replace à l'écran
oElem.style.top = oElem.offsetTop + (e.screenY - oElem.originalY) + 'px';
oElem.style.left = oElem.offsetLeft + (e.screenX - oElem.originalX) + 'px';
oElem.id = '';
// place l'élément au premier plan
oElem.parentNode.appendChild(oElem);
};
// autorise le déplacement sur la totalité du document
document.addEventListener('dragover', function (e) {
e.preventDefault();
}, false);
// initialistion
document.querySelector('#btn_create').onclick = function () {
// création élément
var oElem = document.createElement('button');
oElem.className = 'elem-new';
oElem.setAttribute('draggable', 'true');
// gestion du DnD
oElem.ondragstart = handleDragStart;
oElem.ondragend = handleDragEnd;
// ajout d'un texte
oElem.textContent = 'New element #' + (document.querySelectorAll('.elem-new').length + 1);
// ajout élément
document.querySelector('body').appendChild(oElem);
};
</script>
</body>
</html> |
Partager