Bonjour,
Voilà, j'ai un petit soucis, j'ai une page HTML5, et dedans des DIV, dans ces DIV il y a une image, le format de chaque DIV ressemble à un polaroid.
J'ai ajouté onmousedown, onmouseup sur les DIV et onmousemove pour le document.
Quand je clique sur ma DIV, je peux, en maintenant le bouton appuyé, déplacer ma DIV pour la mettre autre part.
Voilà mon problème, quand je clique sur l'image qui est dans la div, plutôt que sur la zone vide, lorsque que je veux déplacer, mon curseur se transforme en sens interdit et ma DIV ne se déplace pas, si je relâche le bouton, ma DIV se ramène sous le pointeur d'un coup. Comme mon objet pointé est déterminé au onmousedown, je peux ensuite déplacer ma DIV sans avoir à cliquer, et si je clique sur l'image en relâchant, l'événement onmouseup supprime l'objet pointé et je récupère la main.
Bref, alors qu'il n'y a aucun événement défini sur l'image, pourquoi le comportement est-il différent en cliquant sur la DIV ou sur l'image qui est dedans, l'objet pointé étant toujours le même, ma DIV ?
Y a t il un moyen de corriger ?
Merci
Avec le code, c'est mieux (il faut que l'image existe, sinon pas de problème)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Test photos</title> <script type="text/javascript"> var xMousePos = 0; // Horizontal position of the mouse on the screen var yMousePos = 0; // Vertical position of the mouse on the screen var hasMoved = 0; var movingObj = null; var currentClass = null; var objst = null; var movX = movY = 0; var pfx = ["webkit", "moz", "MS", "o", ""]; document.onmousemove = captureMousePosition; // enlarge image function enlarge(who) { } // get current mouse position and move object if set function captureMousePosition(e) { if (document.all) { xMousePos = window.event.x+document.documentElement.scrollLeft; yMousePos = window.event.y+document.documentElement.scrollTop; } else if (document.getElementById) { xMousePos = e.pageX; yMousePos = e.pageY; } if (movingObj != null) { if (movingObj.dragX != xMousePos || movingObj.dragY != yMousePos) { currentClass = '.'+movingObj.id; objst = css_getclass(currentClass); if (objst.style) objst = objst.style; movX = (xMousePos - movingObj.dragX); movY = (yMousePos - movingObj.dragY); hasMoved += Math.abs(movX) + Math.abs(movY) objst.top= (movingObj.offsetTop + movY) + 'px'; objst.left= (movingObj.offsetLeft + movX) +'px'; movingObj.dragX = xMousePos; movingObj.dragY = yMousePos; } } } // click on DIV, register object and current pos function mvtMouse(e) { if (movingObj != null) return; movingObj = e; movingObj.dragX = xMousePos; movingObj.dragY = yMousePos; } // unclick on DIV, check if div moved function stopMove(e) { var tmp; if (movingObj == null) return; movingObj.dragX = 0; movingObj.dragY = 0; tmp=movingObj; movingObj = null; if (hasMoved < 5) enlarge(tmp); hasMoved = 0; } // css rule set function cssrules(){ var rules={}; var ds=document.styleSheets,dsl=ds.length; for (var i=0;i<dsl;++i){ var dsi=ds[i].cssRules,dsil=dsi.length; for (var j=0;j<dsil;++j) rules[dsi[j].selectorText]=dsi[j]; } return rules; }; // get the css rules of a class, so we can change it function css_getclass(name){ var rules=cssrules(); if (!rules.hasOwnProperty(name)) return null; return rules[name]; }; </script> <style type="text/css"> html { font-size: 100%; height: 100%; } BODY { position: relative; text-align: center; margin-top: 0px; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding: 0; height: 100%; background-color: #ffffff; } #master { position: relative; margin-left: auto; margin-right: auto; width: 1024px; height: 100%; overflow : hidden; } #images { position: absolute; width: 100%; height: 100%; } .objet { position: absolute; background: #FFFFFF; opacity: 1; text-align: left; transform-origin: 0 0; cursor : pointer; } .objet h2, .objet p { display: none; } .img10 { width: 94px; height: 70px; top: 100px; left: 550px; padding : 4% 2% 25% 2%; box-shadow : 5px 5px 3px 6px #444444; z-index: 10; } </style> </head> <body bgcolor="#ffffff" text="#000000"> <div id="master"> <div id="images"> <div id="img10" class="objet img10" onmousedown="mvtMouse(this)" onmouseup="stopMove(this)"> <img src="images/artisan.jpg" width="90" height="50" /> <h2>Titre</h2> <p>Bla bla bla bla bla bla</p> </div> </div> </div> </body> </html>
Partager