Bouge de la ! deplacement d'un calque.

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 457 fois - Téléchargée 26 fois

Contenu du snippet

Ce script permet de déplacer un calque dans 4 directions à la vitesse que l'on veut.
augmentation/diminution de la vitesse par clic sur faux-boutons dhtml ou saisie directe dans zone d'affichage.
Déplacement par survol de faux-boutons dhtml.

Source / Exemple :


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>calques</TITLE>
<META http-equiv=Content-Type content=text/html;charset=iso-8859-1>
<STYLE type=text/css>
BODY {
margin: 0px; 
color: black; 
background-color:#D1AB7A;
text-align:center; 
font-size:14px; 
font-family: arial, helvetica;
}
#mon_cac {
POSITION: absolute; 
Z-INDEX: 20; 
LEFT: 250px; 
TOP: 80px; 
WIDTH: 100px;
HEIGHT: 100px; 
PADDING: 0px; 
MARGIN: 0px;     
BACKGROUND-COLOR: red; 
border: 1px solid blue; 
}
.but{
height:23px;
text-align:center; 
background-color: silver;
border-top: 2px solid white;
border-left: 2px solid white;
border-bottom: 2px solid black;
border-right: 2px solid black;
}
.but02{
cursor: pointer;
height:23px;
text-align:center; 
background-color: silver;
border-top: 2px solid black;
border-left: 2px solid black;
border-bottom: 2px solid white;
border-right: 2px solid white;
}

</STYLE>
</HEAD>
<BODY>
<!-- boitier de pilotage -->
<DIV id=cont style="float:left; width:150px; font-size:14px; font-family: arial; font weight: bold; border:0px solid blue; margin-top: 10px; margin-left: 10px;text-align:center;">
<div style="width:50px;" class="but" onmouseover="bouge(1);this.className='but02';" onmouseout="tafini();this.className='but';">haut</div><br>
<div style="float:left; width:54;" class="but" onmouseover="bouge(3);this.className='but02';" onmouseout="tafini();this.className='but';">gauche</div>
<div style="float:left; width:40;"><INPUT size=3 value=5 id="nb" name="nb" style="background-color:black; color: yellow;border: 1px solid yellow;"></div>
<div style="float:left; width:54;" class="but" onmouseover="bouge(4);this.className='but02';" onmouseout="tafini();this.className='but';">droite</div><br><br>
<div id=soucont style="float: left; height:10px; width:150px; border:0px solid blue;">
<div id="less" style="float: left; width:30px; margin-left:7px;padding-top: 3px; cursor: pointer;" class="but" onClick="moreless(0);" onmouseDown="this.className='but02';" onmouseUp="this.className='but';">-</div><div style="float: left; margin-left:5px; width:50px;" class="but" onmouseover="bouge(2);this.className='but02';" onmouseout="tafini();this.className='but';">bas</div><div id="more" style="float: left; width:30px; margin-left: 5px; padding-top: 3px; cursor: pointer;" class="but" onClick="moreless(1);" onmouseDown="this.className='but02';" onmouseUp="this.className='but';">+</div>
</div>
</DIV>
<div id="txt" style="text-align:center;"><br><br>
Ce script permet de déplacer un calque dans 4 directions à la vitesse que l'on veut.<br> 
augmentation/diminution de la vitesse par clic sur faux-boutons dhtml ou saisie directe dans zone d'affichage.<br> 
Déplacement par survol de faux-boutons dhtml.</div>
<!--  le calque -->
<DIV id=mon_cac style="width:100px; height:100px;"></DIV>
<SCRIPT type=text/javascript>
//  position du calque par rapport au haut
istop=80;
//  la position du calque par rapport au coté gauche
isleft=250;
//  longeur du calque
iswidth=100;
// hauteur du calque
isheight=100;
var nb;
var z;
document.all?IE=1:IE=0;
 if (IE) { document.all('mon_cac').style.pixelTop=istop; document.all('mon_cac').style.pixelLeft=isleft;document.all('mon_cac').style.width=iswidth;document.all('mon_cac').style.height=isheight;} 

function bouge(direction) {
eval('move('+direction+')');
ch=setTimeout('bouge('+direction+')',200);
return ch;
}

function tafini() {
clearTimeout(ch);
}

function moreless(z){
if (z>=1)
	{document.getElementById('nb').value++ }
else if 
	(document.getElementById('nb').value<=1) return;
else
	{document.getElementById('nb').value-- }
    }

function move(direction) { //1=haut, 2=bas, 3=gauche, 4=droite
nb=document.getElementById('nb').value;
 if(IE) {calque="document.all('mon_cac').style";px="";W=document.body.clientWidth;H=document.body.clientHeight;} 
pix=(direction==1 || direction==2)?"posTop":"posLeft";
signe=(direction==1 || direction==3)?"-":"+";
width=parseInt(eval(calque+'.width')); 
height=parseInt(eval(calque+'.height'));
newpos=eval("parseInt(eval(calque+'.'+pix))"+signe+""+nb)
if (signe=="-" && newpos<=0)
newpos=0;
else if (signe=="+" && newpos>=(W-width) && direction==4)
newpos=(W-width);
else if (signe=="+" && newpos>=(H-height) && direction==2)
newpos=(H-height);
eval(calque+'.'+pix+'='+newpos)+px;
}
</SCRIPT>
</BODY>
</HTML>

Conclusion :


Pas reussi à le rendre compatible moz et net , (pas trop cherché , non plus)gros probs pour positionner les boutons , les modifs entrainant un affichage desastreux sur I.E.( si quelqu'un veut s'y coller ...).
en tout cas tres utile , non ?
Important , pour eviter un "flash" au moment de l'ouverture de page, les positions X et Y, et les dimensions du calque sont affichées 2 fois (feuille de style et javascript , modifiez les 2 ).

A voir également

Ajouter un commentaire

Commentaires

cs_carate
Messages postés
57
Date d'inscription
mardi 12 décembre 2006
Statut
Membre
Dernière intervention
1 novembre 2007
-
Merci beaucoup tu me débloc du plus gros bug
que j'ai jamais vu
Merci beuacoup
c'est nikel Meri
j'ai qu'une chause à dire Merci

Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci
Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci
Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci
Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci
Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci Merci
crazypsykogizmo
Messages postés
3
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
9 novembre 2005
-
Pas mal, mais y'a t-il un moyen de raccourcir un peut le code ?J'ai étudier la question mais cela reste toujours tres grand aidez moi SVP
YouTzeEN
Messages postés
2
Date d'inscription
dimanche 23 novembre 2003
Statut
Membre
Dernière intervention
19 juin 2005
-
Salut

Bon ben moi je le trouve vraiment nickel ce script !!!(3 mois que je cherchais ça !)
Maintenant, j'aurais besoin de savoir comment pouvoir faire que le calque puisse sortir de la page, avec l'apparition d'une scrollbar en bas ?
Ce serait super sympa, j'en ai besoin pour une carte de commune, en effet, je fais une page avec 2 frames, une haute (la carte) et une basse (la commande, la tienne en l'occurence) seulement, vu que la carte est TRES grande, il serait interessant de pouvoir la deplacer avec ton systeme.

Merci @+

Un webmestre dans la galère, YouTzeEn
cs_daeron
Messages postés
111
Date d'inscription
mardi 8 janvier 2002
Statut
Membre
Dernière intervention
19 décembre 2006
-
Bon programme, très instructif ! Ca c'est le compliment. Sinon c'est ultra chiant a se fader les conditions ternaire sans if...meme avec l'habitude alors pour les débutants !

Quand aux commentaires, je suppose qu'il n'y en a pas besoin.
SuperDevy
Messages postés
842
Date d'inscription
dimanche 24 novembre 2002
Statut
Membre
Dernière intervention
2 juillet 2007
-
Bonne idée... mais je vois pas trop à quoi ça sert ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.