IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Boutons d'un menu qui bougent...


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 9
    Par défaut Boutons d'un menu qui bougent...
    Salut, j'ai un menu avec 4 boutons collés les un contre les autres.
    Je voudrais que lorsque je passe ma souris sur l'un des boutons celui ci se lève de 10 px maximum, lorsque j'enlève la souris (à ni'mporte quelle moment de la monté) je voudrais que celui ci redescende à sa position originelle.

    Mais mes boutons ne réagissent pas comme je veux... il reste bloqué en haut. Je galère sur ce code depuis 2 jours, je pense que cela viens des setTimeout (et surtout des clearTimeout). Je vous ai fait une page HTML pour que vous puissiez visualiser le 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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    <head>
       <title>ehCat</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     
    	<style>
    	#aboutBtnImg{
    	width:50px;
    	height:50px;
    	border:1px solid;
    	position:relative;
    	top:0px;
    	float:left;
    	}
     
    	#cvBtnImg{
    	width:50px;
    	height:50px;
    	border:1px solid;
    	position:relative;
    	top:0px;
    	float:left;
    	}
     
    	#contactBtnImg{
    	width:50px;
    	height:50px;
    	border:1px solid;
    	position:relative;
    	top:0px;
    	float:left;
    	}
     
    	#portfolioBtnImg{
    	width:50px;
    	height:50px;
    	border:1px solid;
    	position:relative;
    	top:0px;
    	float:left;
    	}
    	</style>
     
     
    </head>
     
    <body onload="initMenu();">
     
    <script type="text/javascript">
     
    var t1 = null;
    var t2 = null;
    var test = 0;
    var test2 = 0;
     
    function moveBtnUp(btn)
    {
    	clearTimeout(t2);
     
    	var obj = document.getElementById(btn+'Img').style;	
     
    	if ( parseInt(obj.top) <= 0 && parseInt(obj.top) > -10 )
    	{
    		obj.top = parseInt(obj.top)-1+'px';
    		t1 = setTimeout(function(){moveBtnUp(btn);}, 20)
    	}
    	else
    	{
    		clearTimeout(t1);
    	}
     
    	document.getElementById("test").innerHTML = 'moveBtnUp='+test;
     
     
    	test++;
    }
     
    function moveBtnDown(btn)
    {	
    	clearTimeout(t1);
     
    	var obj = document.getElementById(btn+'Img').style;	
    	if ( parseInt(obj.top) < 0 && parseInt(obj.top) >= -10 )
    	{
    		obj.top = parseInt(obj.top)+1+'px';
    		t2 = setTimeout(function(){moveBtnDown(btn);}, 20)
    	}
    	else
    	{
    		clearTimeout(t2);
    	}
     
    	document.getElementById("test").innerHTML = 'moveBtnDown='+test2;
    	test2++;
    }
     
     
    // ----------------------
    // Initialise les objets
    // ----------------------
     
    function initMenu() {
      document.getElementById('aboutBtnImg').style.top = '0px'
      document.getElementById('cvBtnImg').style.top = '0px'
      document.getElementById('portfolioBtnImg').style.top = '0px'
      document.getElementById('contactBtnImg').style.top = '0px'
    }
     
    </script>
     
    <div id="aboutBtnImg" onmouseover="moveBtnUp('aboutBtn');" onmouseout="moveBtnDown('aboutBtn');"></div>
    <div id="cvBtnImg" onmouseover="moveBtnUp('cvBtn');" onmouseout="moveBtnDown('cvBtn');"></div>
    <div id="portfolioBtnImg" onmouseover="moveBtnUp('portfolioBtn');" onmouseout="moveBtnDown('portfolioBtn');"></div>
    <div id="contactBtnImg" onmouseover="moveBtnUp('contactBtn');" onmouseout="moveBtnDown('contactBtn');"></div>
     
    </body>
    </html>
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    <head>
       <title>ehCat</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     
    	<style>
    	#aboutBtnImg{
    	width:50px;
    	height:50px;
    	border:1px solid;
    	position:relative;
    	top:0px;
    	float:left;
    	}
     
    	#cvBtnImg{
    	width:50px;
    	height:50px;
    	border:1px solid;
    	position:relative;
    	top:0px;
    	float:left;
    	}
     
    	#contactBtnImg{
    	width:50px;
    	height:50px;
    	border:1px solid;
    	position:relative;
    	top:0px;
    	float:left;
    	}
     
    	#portfolioBtnImg{
    	width:50px;
    	height:50px;
    	border:1px solid;
    	position:relative;
    	top:0px;
    	float:left;
    	}
    	</style>
     
     
    </head>
     
    <body onload="initMenu();">
     
    <script type="text/javascript">
     
    var t1 = null;
    var t2 = null;
    var test = 0;
    var test2 = 0;
     
    function moveBtnUp(btn)
    {
    	clearTimeout(document.getElementById(btn+'Img').t2);
     
    	var obj = document.getElementById(btn+'Img').style;	
     
     
    	if ( parseInt(obj.top) <= 0 && parseInt(obj.top) > -10 )
    	{
    		obj.top = parseInt(obj.top)-1+'px';
    		document.getElementById(btn+'Img').t1 = setTimeout(function(){moveBtnUp(btn);}, 20)
    	}
    	else
    	{
    		clearTimeout(document.getElementById(btn+'Img').t1);
    	}
     
     
    	test++;
    }
     
    function moveBtnDown(btn)
    {	
    	clearTimeout(document.getElementById(btn+'Img').t1);
     
    	var obj = document.getElementById(btn+'Img').style;	
    	if ( parseInt(obj.top) < 0 && parseInt(obj.top) >= -10 )
    	{
    		obj.top = parseInt(obj.top)+1+'px';
    		btn.t2 = setTimeout(function(){moveBtnDown(btn);}, 20)
    	}
    	else
    	{
    		clearTimeout(document.getElementById(btn+'Img').t2);
    	}
     
    	test2++;
    }
     
     
    // ----------------------
    // Initialise les objets
    // ----------------------
     
    function initMenu() {
      document.getElementById('aboutBtnImg').style.top = '0px'
      document.getElementById('cvBtnImg').style.top = '0px'
      document.getElementById('portfolioBtnImg').style.top = '0px'
      document.getElementById('contactBtnImg').style.top = '0px'
    }
     
    </script>
     
    <div id="aboutBtnImg" onmouseover="moveBtnUp('aboutBtn');" onmouseout="moveBtnDown('aboutBtn');"></div>
    <div id="cvBtnImg" onmouseover="moveBtnUp('cvBtn');" onmouseout="moveBtnDown('cvBtn');"></div>
    <div id="portfolioBtnImg" onmouseover="moveBtnUp('portfolioBtn');" onmouseout="moveBtnDown('portfolioBtn');"></div>
    <div id="contactBtnImg" onmouseover="moveBtnUp('contactBtn');" onmouseout="moveBtnDown('contactBtn');"></div>
     
    </body>
    </html>
    il ne te reste plus qu'a épurer

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 9
    Par défaut
    Je savais que c'était un truc du genre... mais j'y serais pas arrivé seul !
    Merci beaucoup le_chomeur !

    Il reste encore un problème.. lorsque la souris vient du bas et ne va pas vite, le bloc ne bouge pas...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 9
    Par défaut
    Je crois comprendre d'où cela vient... Quand la souris touche par en bas le bloc, celui ci monte, la souris ne le touche plus et donc il redescend tout de suite...

    Comment faire pour que le bloc soit 'virtuellement' toujours à sa place originelle, afin que la souris le touche toujours même si elle reste dans cette plage de 10 px vidé.
    Que faire ?

Discussions similaires

  1. Bouton du menu qui ne se décale pas
    Par bouille24 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 24/10/2008, 09h17
  2. Api Win32 : boutons "qui bougent" au passage de la
    Par Spartan03 dans le forum Windows
    Réponses: 9
    Dernier message: 06/06/2005, 23h52
  3. menu qui se positionne mal
    Par peck dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/12/2004, 23h24
  4. menu qui passe au dessus du texte
    Par peck dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/12/2004, 15h03
  5. faire un petit menu qui lance des processus
    Par tomsoyer dans le forum Linux
    Réponses: 4
    Dernier message: 30/11/2004, 18h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo