DRAG AND DROP ET REDIMENSIONNEMENT

jhenaff Messages postés 9 Date d'inscription dimanche 16 novembre 2003 Statut Membre Dernière intervention 12 octobre 2006 - 6 sept. 2006 à 01:49
cs_saadellaoui Messages postés 11 Date d'inscription vendredi 7 mai 2010 Statut Membre Dernière intervention 31 mai 2011 - 26 mai 2011 à 11:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39451-drag-and-drop-et-redimensionnement

cs_saadellaoui Messages postés 11 Date d'inscription vendredi 7 mai 2010 Statut Membre Dernière intervention 31 mai 2011
26 mai 2011 à 11:34
Bonjour,je veux juste pouvoir deplacer et redimensionner les images et les div que à l'interieur de la zone de div ou je les insere
en plus je veux que le redimensionnement de la taille d'image ou de div soit d'une manière proportionnelle.comment je dois faire?
Merci d'avance
thierrysudfr Messages postés 1 Date d'inscription mercredi 20 janvier 2010 Statut Membre Dernière intervention 27 janvier 2010
27 janv. 2010 à 13:30
cs_zen28 Messages postés 1 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 29 décembre 2009
29 déc. 2009 à 11:04
Bonjour à tous très beau script j'essaie tout de même de l'adapter à mon souci mais en vain. Je vous explique j'ai un tableau en html et 2 colonnes soient 2 balises "TD" et j'aimerais que la bordure séparant les 2 colonnes soit déplaçable, et biensur que sa modifie le contenu de ces balises. Merci beaucoup et bonnes fêtes ^^
Tyra3l Messages postés 3 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 31 décembre 2009
29 déc. 2009 à 09:51
Bonjour, super script très bien fait.
Toutefois serait-ce possible de resize des cercles/disque et non des rectangles ?

Merci d'avance
cs_machmachi Messages postés 1 Date d'inscription samedi 6 décembre 2008 Statut Membre Dernière intervention 14 mai 2009
14 mai 2009 à 10:23
Merci pour ce script tres utile.
j'essaye de l'implementer dans une page web et j'ai besoin de savoir comment peut on recuperer la position des rectangle afin de l'enregistrer sur ma bdd apres une valisation par un bouton.
merci d'avance
hornet_bzz Messages postés 17 Date d'inscription samedi 16 décembre 2006 Statut Membre Dernière intervention 26 décembre 2009
23 janv. 2009 à 12:39
Simple, efficace, bien écrit, bien indenté, bravo !!!!!!

:-)
cs_JPSI Messages postés 2 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 21 août 2008
21 août 2008 à 15:18
Très utile, merci!
Pour CALITOM, supprime ces lignes et ça marchera:
if(vgCurrentPositionX==X_OTHER && vgCurrentPositionY==Y_OTHER)
{
vgCurrentX = vgMouseX-vgMouseDiffX;
vgCurrentY = vgMouseY-vgMouseDiffY;
}
fabienvdf Messages postés 1 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 23 avril 2008
23 avril 2008 à 13:18
merci beaucoup pour ce super script qui m'est très utile.
Cependant, il me manque une fonction essentielle, celle de récupérer les coordonnées des div.
Malheureusement, je n'ai aucune idée de comment y arriver (je débute en PHP - Javascript).
Quelqu'un aurait-il une idée de comment faire à partir de ce script ??
Merci d'avance
cs_laurentg2003 Messages postés 1 Date d'inscription samedi 12 août 2006 Statut Membre Dernière intervention 4 novembre 2007
4 nov. 2007 à 19:14
Bonjour,
Trés bon script compatible IE7 et FF
Mais cependant une chose que je trouve trés dommage pour les débutants et les dévellopeurs confirmés:l'absence de commentaires.
Si tu pouvais le commenter ça serait parfait.
calitom Messages postés 4 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 28 septembre 2007
16 août 2007 à 12:14
Bonjour,

Superbe ce script!
Je voudrais utiliser la partie qui permet de redimensionner le div sans le déplacement...
Comment faire?
jmeunier Messages postés 86 Date d'inscription mardi 10 septembre 2002 Statut Membre Dernière intervention 17 mai 2013
30 avril 2007 à 12:26
très beau script ...
je l'ai adapté en php/mysql pour pouvoir sauvegarder l'environnement et nommer les fenêtres

http://www.phpcs.com/codes/MINI-PORTAIL_42510.aspx
wissweb Messages postés 5 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 15 août 2010
17 avril 2007 à 18:53
Bonjour...

Je réussi pas à mettre un fichier .swf dans le script pour le déplacer et le redimmensionné. Je veux mettre une image en arrière et mettre les ficiers flash en avant. J'essais et j'essais pas capable, faut dire que je suis pas très bon dans le domaine....

Merci à l'avance.
fandembj Messages postés 4 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 22 mars 2007
22 mars 2007 à 21:11
Bravo pour cette source géniale !
J'aimerais cependant avoir une petite info.

Je souhaiterais utiliser ce calque amovible à l'intérieur d'une zone définie (une cellule de tableau de 200px par 200px par exemple).
Quelles sont les ajouts/modifications à effectuer pour "bloquer" le déplacement afin qu'il ne sorte pas de la zone choisie (dans notre exemple, que la zone de déplacement soit limité par ces 4 pts :
0,0 0,200
200,0 200,200)

Merci d'avance.
myke666 Messages postés 1 Date d'inscription vendredi 2 mars 2007 Statut Membre Dernière intervention 2 mars 2007
2 mars 2007 à 14:01
petite correction pour la fonction fnresize valable si on laisse la bordure à 10px :
si suffit de remplacer la fonction existante par celle ci et chpouff plus de souci d'agrandissement intenpestif :
function fnResizeDiv()
{
if(vgCurrentElement!=null && vgCurrentElement!=undefined)
{
if (navigator.appName.substring(0,3) == "Net") {
document.getElementById(vgCurrentElement).style.left = vgCurrentX;
document.getElementById(vgCurrentElement).style.top = vgCurrentY;
document.getElementById(vgCurrentElement).style.width = vgCurrentWidth-20;
document.getElementById(vgCurrentElement).style.height = vgCurrentHeight-20;
}else {
document.getElementById(vgCurrentElement).style.left = vgCurrentX;
document.getElementById(vgCurrentElement).style.top = vgCurrentY;
document.getElementById(vgCurrentElement).style.width = vgCurrentWidth;
document.getElementById(vgCurrentElement).style.height = vgCurrentHeight;
}
}
}
souliehenri Messages postés 1 Date d'inscription vendredi 3 février 2006 Statut Membre Dernière intervention 1 décembre 2006
1 déc. 2006 à 08:15
Bonjour,

Tout d'abord, je dois dire que ce script est vraiment bien fait! Merci pour ta source!

J'ai cependant une petite question (juste histoire de compliquer les choses :d).
En fait, j'ai créé un script PHP générant les claques redimensionnables en fonction du nombre déterminé ar l'utilisateur. Et donc je voulais savoir comment faire pour récupérer les nouvelles coordonnées des calques dans un formulaire? Car mon probème, c'est que je ne peux récupérer que celui que l'on redimensione à l'instant t. Voici mon petit bout de code:

if(vgCurrentElement!=null && vgCurrentElement!=undefined)
{
document.getElementById(vgCurrentElement).style.left = vgCurrentX;
document.getElementById(vgCurrentElement).style.top = vgCurrentY;
document.getElementById(vgCurrentElement).style.width = vgCurrentWidth;
document.getElementById(vgCurrentElement).style.height = vgCurrentHeight;
document.form1.formtext1.value=vgCurrentX;
document.form1.formtext2.value=vgCurrentY;
document.form1.formtext3.value=vgCurrentWidth;
document.form1.formtext4.value=vgCurrentHeight;
}
jhenaff Messages postés 9 Date d'inscription dimanche 16 novembre 2003 Statut Membre Dernière intervention 12 octobre 2006
12 oct. 2006 à 08:33
Effectivement tu as raison. En fait le browser place toujours l'élément object au premier plan ce et toutes les interractions avec le div le contenant sont perdues.
la solution est donc d'ajouter des bordures au div (genre 10 px) si l'object est dans un div refimensionnable, ou à l'object lui même et tu pourra le redimensionner ta vidéo en sélectionnant les bordures.

Sinon tu peux aussi englober l'object dans un div 20% plus grand par exemple ce qui te laisse 20% de marge pour le déplacer. Mais des que tu survole l'object lui même c'est l'activex qui prend le dessus et plus moyen de le déplacer.

J'espere que ca t'aidera un peu tout de même.
jer666 Messages postés 3 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 11 octobre 2006
11 oct. 2006 à 12:21
salut,

je te remercie de ta reactivité =)

j'avais déjà essayé ces 2 possibilités avant de laisser un commentaire.

si je precise 100% ou que je donne une IDentité a mon objet sans préciser sa taille, je n'ais pas de lecteur, pas de média...

je vais essayer de modifier le lecteur ce soir... merci encore... si tu as une autre idée ;-)
jhenaff Messages postés 9 Date d'inscription dimanche 16 novembre 2003 Statut Membre Dernière intervention 12 octobre 2006
11 oct. 2006 à 08:25
dans la balise object, tu spécifie une taille (350*250). Donc lorsque tu agrandis le div la contenant, tu n'agrandis pas l'object lui même. Donc 2 choix : soit tu définis l'object en width="100%" et height="100%", soit tu donne à cet object un id et un nom et c'est directement lui que tu déplace :
<object type="application/x-shockwave-flash" width="350" height="250" id="video1" name="video1" onMouseOver="fnOnMouseOver('video1');" onMouseOut="fnOnMouseOver();"
wmode="transparent" data="flv/flvplayer.swf?file=<?php echo $_POST['video']; ?>.flv">
.flv" />


et dans ce cas plus besoin de le contenir dans un div.
jer666 Messages postés 3 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 11 octobre 2006
10 oct. 2006 à 20:55
salut,

merci pour cette superbe source!

cependant pour le precedent commentaire, je me demande si vous pourriez corriger mon erreur....

j'essaye d'inclure votre script a ma future page pour lire des video format flash.

voici le code que j'utilise



<object type="application/x-shockwave-flash" width="350" height="250"
wmode="transparent" data="flv/flvplayer.swf?file=<?php echo $_POST['video']; ?>.flv">
.flv" />

</object>


la video flash apparait bien, mais elle n'est ni déplacable, ni même redimmensionnable... sachant que pour moi tout l'interet est de pouvoir redimmensionner la video a la demande... pas de la déplacer :D

pourriez vous orienter mes recherches? je vous en remercis par avance.
jhenaff Messages postés 9 Date d'inscription dimanche 16 novembre 2003 Statut Membre Dernière intervention 12 octobre 2006
2 oct. 2006 à 08:34
Oui tout a fait.
wissweb Messages postés 5 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 15 août 2010
1 oct. 2006 à 18:45
Salut bien.

Une petite question, est ce possible de mettre des fichiers .jpg , .gif ou flash à la place des carreaux afin de mettre les images ou animation flash à une endroit avec la souris ? ? ?
jhenaff Messages postés 9 Date d'inscription dimanche 16 novembre 2003 Statut Membre Dernière intervention 12 octobre 2006
25 sept. 2006 à 18:34
Oui c'est tout à fait possible :
dans la fonction fnOnMouseDown() il faudra donner un z-index élevé (ex 10) à l'élément sélectionné :
function fnOnMouseDown()
{
vgMouseDown = true;

if(vgCurrentElement!=null && vgCurrentElement!=undefined)
{
//first plan
document.getElementById(vgCurrentElement).style.zIndex = 10;

//Init of size
vgCurrentX = document.getElementById(vgCurrentElement).offsetLeft;
vgCurrentY = document.getElementById(vgCurrentElement).offsetTop;
vgCurrentWidth = document.getElementById(vgCurrentElement).offsetWidth;
vgCurrentHeight = document.getElementById(vgCurrentElement).offsetHeight;

//Init of distance
vgMouseDiffX = vgMouseX-vgCurrentX;
vgMouseDiffY = vgMouseY-vgCurrentY;

//Init of position
if(vgMouseDiffX < 20 || (vgCurrentWidth-vgMouseDiffX) < 20)
{
if(vgMouseDiffX < vgCurrentWidth/2)
vgCurrentPositionX = X_LEFT;
else
vgCurrentPositionX = X_RIGHT;
}
else
vgCurrentPositionX = X_OTHER;


if(vgMouseDiffY < 20 || (vgCurrentHeight-vgMouseDiffY) < 20)
{
if(vgMouseDiffY > vgCurrentHeight/2)
vgCurrentPositionY = Y_DOWN;
else
vgCurrentPositionY = Y_UP;
}
else
vgCurrentPositionY = Y_OTHER;


vgTimerMouse = setInterval("fnOnMouseMove();", vgTimerTime);
}
}

et lorsqe l'on relache la souris le remettre à 1
function fnOnMouseUp()
{
if(vgCurrentElement!=null && vgCurrentElement!=undefined)
document.getElementById(vgCurrentElement).style.zIndex = 1;

vgMouseDown = false;
clearInterval(vgTimerMouse);
}

Le seul probleme est que lorsqu'on le remet à 1, il peut repasser derriere les autres blocs.
Mais si on ne le remet pas à 1, les blocfs vont tous rester à 10.
cs_putch Messages postés 624 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 14 décembre 2009 1
25 sept. 2006 à 17:50
yes impec !

sinon y'a une solution pour faire que l'element que l'on deplace devienne l'element qui "sera par dessus" les autres ?

la je pense notamment à la propriété z-index en CSS ...
jhenaff Messages postés 9 Date d'inscription dimanche 16 novembre 2003 Statut Membre Dernière intervention 12 octobre 2006
23 sept. 2006 à 14:59
Dans la fonction fononMouseDown, dans la partie init of position il suffit de mettre dans tous les cas X_OTHER et Y_OTHER
cs_putch Messages postés 624 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 14 décembre 2009 1
22 sept. 2006 à 16:53
re salut !

je voudrai savoir quoi modifier dans cette source pour n'avoir que le déplacement des blocs sans le redimensionnement.

Merci bien!
leprofmelo Messages postés 1 Date d'inscription lundi 7 août 2006 Statut Membre Dernière intervention 18 septembre 2006
18 sept. 2006 à 23:18
excellent, je l'utilise immédiatement sur mon site....
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
14 sept. 2006 à 10:59
Vraiment chouette. Bravo !
MrTuTu Messages postés 1 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 13 septembre 2006
13 sept. 2006 à 15:47
Salut,
je viens de me mettre à javascript. Je suis en train de faire un système de réservation en php/mysql utilisant de l'ajax.

Merci pour ton script qui va vraiment me faire gagner du temps !
cs_thejam Messages postés 1 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 12 septembre 2006
12 sept. 2006 à 13:03
Super! Ton script m'est très utile.
Vraiment un grand merci :)
frankydan Messages postés 2 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 11 septembre 2006
11 sept. 2006 à 16:07
Moi aussi je trouve que c'est une très bonne idée.

Au lieu d'utiliser des Pop-Ups pour afficher une
image ou une description, on peut utiliser ton
script. Ainsi, l'utilisateur n'est pas sorti du
contexte à cause d'un Pop-Up.

Bon travail.
mickaelpfr Messages postés 197 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 avril 2009 2
8 sept. 2006 à 10:17
très bonne source ( je n'ai regardé que le résultat ... ) mais bravo :)
cs_putch Messages postés 624 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 14 décembre 2009 1
7 sept. 2006 à 15:19
salut !
bonne source !

pour info ça fonctionne avec opéra 9.0
jhenaff Messages postés 9 Date d'inscription dimanche 16 novembre 2003 Statut Membre Dernière intervention 12 octobre 2006
6 sept. 2006 à 13:01
Pour l'agrandissement, le problème vient des bordures du div. Si elles font 15px par exemple, le div s'agrandit de 15 px. Si les bordures sont à 0 il n'y a plus de problème.
En fait la capture de la taille des blocs est faite par offsetWidth/offsetHeight et la redimension par style.width/style.height et offsetWidth est compris différemment par les navigateurs (ex : Firefox->taille interne du bloc en enleveant les bordures et IE taille totale du bloc). Je vais essayer de corriger ca.

Pour la superposition des blocs, seul le bloc du dessus retourne l'événement onMouseOver, donc il n'y a pas le choix. A moins de donner un z-index élevéau dernier bloc sélectionner pour le remettre au premier plan.

Sinon le script est compatible Firefox et IE, mais je n'ai pas testé Opéra ou d'autres, donc à tester.
cs_devlo Messages postés 5 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 3 janvier 2008
6 sept. 2006 à 11:05
Ton script est très sympa, il y a juste deux choses que j'ai remarqué : lorsqu'on clique sur l'un des divs pour le déplacer celui ci s'agrandi et lorsqu'on place l'un des divs au dessus de l'autre on ne peut plus déplacer celui qui est dessous sans enlever celui du dessus

Bon je sais ça tient du détail : )

Oh fait est ce que ton script est compatible avec tous les navigateurs ? Il me semble que 'getElementById' n'est pas implémenté par tous et qu'il faut dans certain cas utiliser 'all' ... ?
jhenaff Messages postés 9 Date d'inscription dimanche 16 novembre 2003 Statut Membre Dernière intervention 12 octobre 2006
6 sept. 2006 à 01:49
Ajoutez une video ou une image dans las div et vous pourrez les déplacer et les redimensionner en temps réel.
Rejoignez-nous