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 93 94 95 96 97 98 99 100 101 102 103 104 105 106
| <!DOCTYPE html>
<html lang="fr">
<head>
<title>Patrick WYSIWYG html</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=10">
<style>
#editeur {
height: 90%;
min-height: 600px;
width: 90%;
border: 1px solid black;
}
#red { width: 250px; height: 250px; border: 1px solid red; }
#blue { width: 200px; height: 200px; border: 1px solid blue; }
#green { width: 100px; height: 100px; border: 1px solid green; }
</style>
<script type="text/javascript">
'use strict';
var Ed = document.getElementById('editeur');
var DX, DY, oX, oY;
var dragged;
var bordure;
document.addEventListener('mousemove', WhereMouse);
document.addEventListener('mouseup', drag_onmouseup);
function drag_onmouseup(ev) {
if (dragged) {
dragged.style.border = bordure;
X = ev.clientX + (document.documentElement.scrollLeft + document.body.scrollLeft);
Y = ev.clientY + (document.documentElement.scrollTop + document.body.scrollTop);
var obj = document.elementFromPoint(oX, oY); //oX et oY sont calculés dans le mousemove
var par = dragged.parentElement;
if (par.id !== obj.id) {
obj.appendChild(dragged);
if (obj.id !== 'editeur') {
dragged.style.left = '30px';
dragged.style.top = '30px';
obj.style.left = (obj.offsetLeft + 1) + 'px';
} else {
dragged.style.left = (X - DX) + 'px';
dragged.style.top = (Y - DY) + 'px';
}
}
if ('editeur' === obj.id) {
dragged.style.left = (X - DX) + 'px';
dragged.style.top = (Y - DY) + 'px';
}
}
dragged = null;
} //On arrête le drag
function dragstart(ev) {
ev.preventDefault();
dragged = ev.target;
bordure = dragged.style.border;
dragged.style.border = '2px dotted #8258FA';
X = ev.clientX + (document.documentElement.scrollLeft + document.body.scrollLeft);
Y = ev.clientY + (document.documentElement.scrollTop + document.body.scrollTop);
DX = X - dragged.offsetLeft;
DY = Y - dragged.offsetTop;
}
function WhereMouse(ev) {
if (dragged != null) {
Mouse_X = ev.clientX + (document.documentElement.scrollLeft + document.body.scrollLeft);
Mouse_Y = ev.clientY + (document.documentElement.scrollTop + document.body.scrollTop);
Mouse_X -= DX;
Mouse_Y -= DY;
dragged.style.left = Mouse_X + 'px';
dragged.style.top = Mouse_Y + 'px';
dragged.style.position = 'absolute';
oX = Mouse_X - 10;
oY = Mouse_Y + 5;
}
}
</script>
</head>
<body>
<button>Ajouter un div</button>
<div id="editeur" contenteditable="true">
<p>Du texte dans léditeur</p>
<div id="red" class="divint"><p>Du texte dans mon div</p></div>
<div id="blue" class="divint"><p>Du texte dans celui-ci</p></div>
<div id="green" class="divint"><p>Celui-là aussi</p></div>
</div>
<script type="text/javascript">
'use strict';
document.getElementById('red' ).addEventListener('dragstart', dragstart);
document.getElementById('blue' ).addEventListener('dragstart', dragstart);
document.getElementById('green').addEventListener('dragstart', dragstart);
document.querySelector('button').addEventListener('click', insertdiv);
</script>
</body>
</html> |
Partager