Salut,
voilà un exemple réduit au minimum :
	
	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
   | function getMouseCoords(evnt){
	if(window.event)	{
		evnt = window.event;
	}
	// Gecko
	if(evnt.pageX || evnt.pageY)	{
		return {x:evnt.pageX, y:evnt.pageY};
	}
	// IE
	else if(evnt.clientX || evnt.clientY)	{
		return {x:evnt.clientX + document.body.scrollLeft - document.body.clientLeft, y:evnt.clientY + document.body.scrollTop - document.body.clientTop};
	}
}
 
function Box()	{
	this.isDraggable = false;
 
	// Composants graphiques
	this.mainPanel = document.createElement('div');
	this.mainPanel.style.position = 'absolute';
	this.mainPanel.style.backgroundColor = '#ECE9D8';
	this.message = document.createElement('p');
	this.mainPanel.style.width = 300;
 
	this.mainPanel.onmousedown = function(evnt)	{
		var mousePos = getMouseCoords(evnt);
		window.box.isDraggable = true;
		window.box.mainPanel.xOffset = mousePos.x - window.box.mainPanel.offsetLeft;
		window.box.mainPanel.yOffset = mousePos.y - window.box.mainPanel.offsetTop;
	}
 
	document.onmouseup = function()	{
		if(window.box != null)	{
			window.box.isDraggable = false;
		}
	}
 
	document.onmousemove = function(evnt)	{
		if(window.box != null && window.box.isDraggable == true)	{
			var mousePos = getMouseCoords(evnt);
			window.box.mainPanel.style.left = mousePos.x - window.box.mainPanel.xOffset;
			window.box.mainPanel.style.top = mousePos.y - window.box.mainPanel.yOffset;
		}
	}
 
	// Message
	this.message.innerHTML = "message";
 
	this.mainPanel.appendChild(this.message);
	document.body.appendChild(this.mainPanel);
}
 
 
window.box = new Box(); | 
 Si tu ne veux pas que le div bouge quand on clique un élément enfant je te conseille d'ajouter un div de titre et de modifier :
	
	this.mainPanel.onmousedown = etc
 par :
	
	this.titlePanel.onmousedown = etc
 Bye
(précision : j'ai codé ce truc pour simuler des fenêtres d'alert et est donc destiné à la base à créer un seul élément draggable et à le détruire. Pour gérer plusieurs éléments la méthode est un peu différente)
						
					
Partager