Salut,
voilà un exemple réduit au minimum :
	
	| 12
 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