Bonjour à tous,
J'ai un little souci.
Débutant en prog web je m'attaque à JS, j'essaye de faire un menu avec un sous menu , un sous sous menu ,... jusqu'à infinie enfin suivant les données de la base de données .
Ces menus ainsi que leur sous menu doivent si possible apparaitre avec un effet genre slide, ils doivent se réroulés sur un même axe. c'est à dire verticalement.
Voici une idée général mais je n'arrive pas à faire les sous-sous-menu
Merci de m'aider
Voici la démo dispo sur le net : http://css.developpez.com/galerie/demo/menus/verticalderoulant1/
Voici les codes pour le menu ainsi que le sous menu du premier niveau :
Partie HTML
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 <!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" lang="fr"> <head> <title>Menu déroulant vertical sur clic</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" href="style.css" type="text/css" /> <script type="text/javascript" src="functions.js"></script> </head> <body> <div id="menu"> <div class="menu" id="menu1" onclick="afficheMenu(this)"> <a href="#">Menu 1</a> </div> <div id="sousmenu1" style="display:none"> <div class="sousmenu"> <a href="#">Sous-Menu 1.1</a> </div> <div class="sousmenu"> <a href="#">Sous-Menu 1.2</a> </div> <div class="sousmenu"> <a href="#">Sous-Menu 1.3</a> </div> <div class="sousmenu"> <a href="#">Sous-Menu 1.4</a> </div> </div> <div class="menu" id="menu2" onclick="afficheMenu(this)"> <a href="#">Menu 2</a> </div> <div id="sousmenu2" style="display:none"> <div class="sousmenu"> <a href="#">Sous-Menu 2.1</a> </div> <div class="sousmenu"> <a href="#">Sous-Menu 2.2</a> </div> <div class="sousmenu"> <a href="#">Sous-Menu 2.3</a> </div> </div> <div class="menu" id="menu3" onclick="afficheMenu(this)"> <a href="#">Menu 3</a> </div> <div class="menu" id="menu4" onclick="afficheMenu(this)"> <a href="#">Menu 4</a> </div> <div id="sousmenu4" style="display:none"> <div class="sousmenu"> <a href="#" >Sous-Menu 4.1</a> </div> <div class="sousmenu"> <a href="#">Sous-Menu 4.2</a> </div> <div class="sousmenu"> <a href="#">Sous-Menu 4.3</a> </div> <div class="sousmenu"> <a href="#">Sous-Menu 4.4</a> </div> <div class="sousmenu"> <a href="#">Sous-Menu 4.5</a> </div> </div> </div> </body> </html>
Partie CSS
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 *{ margin:0; padding:0; } #menu{ width:150px; margin:20px auto 0 auto; } .menu, .sousmenu{ text-align:center; } .menu{ height:18px; width:150px; padding:2px 0; background:#404040; color:#fff; } .sousmenu{ height:18px; width:150px; padding:1px 0; background:#808080; color:#fff; } .menu a{ display:block; width:100%; height:100%; color:#fff; font-family:arial,sans-serif; font-size:12px; font-weight:bold; text-decoration:none; background:#404040; } .sousmenu a{ display:block; width:100%; height:100%; color:#fff; font-family:arial,sans-serif; font-size:12px; font-weight:bold; text-decoration:none; background:#808080; } .menu a:hover, .sousmenu a:hover, .menu a:active, .sousmenu a:active, .menu a:focus, .sousmenu a:focus{ background:#ca0008; }
Et enfin partie "Slide" ou plutôt JS
J'attend vos réponses avec impatience
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 function afficheMenu(obj){ var idMenu = obj.id; var idSousMenu = 'sous' + idMenu; var sousMenu = document.getElementById(idSousMenu); /*****************************************************/ /** on cache tous les sous-menus pour n'afficher **/ /** que celui dont le menu correspondant est cliqué **/ /** où 4 correspond au nombre de sous-menus **/ /*****************************************************/ for(var i = 1; i <= 4; i++){ if(document.getElementById('sousmenu' + i) && document.getElementById('sousmenu' + i) != sousMenu){ document.getElementById('sousmenu' + i).style.display = "none"; } } if(sousMenu){ //alert(sousMenu.style.display); if(sousMenu.style.display == "block"){ sousMenu.style.display = "none"; } else{ sousMenu.style.display = "block"; } } }
Partager