[Plan du site]
Vous êtes ici ---
> Le Site du Zéro
> Les tutoriels
> Non-Officiels
> Site Web
> XHTML / CSS
> Faire un menu similaire à celui du design PopUp
> Lecture du tutoriel
Faire un menu similaire à celui du design PopUp
Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Salut les Zér0s. Ici, nous allons apprendre à créer facilement un menu horizontal, comme celui du
design PopUp, avec un peu de Javascript et surtout du CSS.
Il est donc recommandé d'avoir lu le
cours de M@teo21.
Pour le Javascript, aucune connaissance n'est requise, tout est expliqué dans le tutoriel !
Nous allons, dans ce chapitre, créer la structure de la page.
L'(x)HTML
On commence par mettre la structure d'une page Web

:
Code : HTML 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | <!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Menu horizontal simple</title>
</head>
<body>
<div id="header"><img alt="Banniere" src="logo_sdz_fr.png" /></div>
<div id="menu"><a href="#">Accueil</a></div>
<div id="menu_accueil">blabla menu accueil</div>
<div id="contenu">Blabla du contenu</div>
<div id="footer">Copyright tout pourri.</div>
</body>
</html>
|
AAAAAAAAH ! C'est sur ça que je travaille

?!
Oui mais c'est normal, il n'y a pas de CSS !
Le
<div> "
menu_accueil" est le menu qui apparaîtra au passage de la souris sur "
Accueil".
Le CSS
Ici, on va donner du style à notre page.
Code : CSS 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 | BODY {
background:#E8F0F4;
margin:0;
padding:0;
}
#header {
background:#E8F0F4 url(bg_logo.png) repeat-x;
text-align:center;
}
#menu {
margin-top:5px;
padding-left:25px;
background-color:#FFFFFF;
border:dashed #000000 1px;
border-right:none;
border-left:none;
font-family:Arial, Verdana;
}
#menu_accueil {
position:absolute;
display:none; /* On fait disparaître le <div> */
left: 0px;
top:140px;
width:180px;
border:dashed #000000 1px;
border-top:none;
height:auto;
font-family:Arial, Verdana;
background-color:#FFFFFF;
}
#contenu {
background-color:#FFFFFF;
border:solid #000000 1px;
margin-top:10px;
font-family:Arial, Verdana;
}
#footer {
text-align:center;
background-color:#FFFFFF;
border:dashed #000000 1px;
margin-top:10px;
font-family:Arial, Verdana;
}
|
Ça commence à prendre forme

!
Le "
display:none;" sert donc à faire disparaître le
<div>.
Dans le deuxième chapitre, on va mettre l'essentiel : le
Javascript !
Nous y voici enfin

: le JS (Javascript) !
Je vais d'abord vous donner le code et après, je vous l'expliquerai :
Code
Code : JavaScript1
2
3
4
5
6
7
8 | function afficher(element)
{
document.getElementById(element).style.display = 'block';
}
function cacher(element)
{
document.getElementById(element).style.display = 'none';
}
|
Code : HTML 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | <!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link title="CSS" href="Style.ex3.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="javascript.js"></script>
<title>Menu horizontal simple</title>
</head>
<body>
<div id="header"><img alt="Banniere" src="logo_sdz_fr.png" /></div>
<div id="menu"><a href="#" onclick="return(false);" onmouseover="javascript:afficher('menu_accueil');" onmouseout="javascript:cacher('menu_accueil');">Accueil</a></div>
<div id="menu_accueil" onmouseover="javascript:afficher('menu_accueil');" onmouseout="javascript:cacher('menu_accueil');">blabla menu accueil</div>
<div id="contenu">Blabla du contenu</div>
<div id="footer">Copyright tout pourri.</div>
</body>
</html>
|
Voilà : vous remarquerez qu'il y a peu de choses qui changent !
Explications
Code : JavaScript1
2 | onmouseover="javascript:afficher('menu_accueil);"
onMouseout="javascript:cacher('menu_accueil);"
|
Voici les lignes que j'ai rajoutées à "
menu" et à "
menu_accueil"

.
Code : JavaScript1 | javascript:afficher('menu_accueil);
|
Code : JavaScript1 | javascript:cacher('menu_accueil);
|
Ce morceau de code appelle la fonction afficher / cacher, qui contient ça :
Code : JavaScript1 | document.getElementById(element).style.display = 'valeur';
|
Décomposons ce code :
Code : JavaScript1 | document.getElementById(element)
|
Sert à sélectionner l'élément ayant l'ID donné (
element).
Code : JavaScript
Ce code sert à changer ou à donner la valeur à la propriété CSS
display.
Donc "
document.getElementById('valeur').style.display = 'none';" sert à faire disparaître l'élément "
valeur" et "
document.getElementById('valeur').style.display = 'block';" sert à le faire apparaître.
C'est tout pour ces (courtes) explications

.
Oui, on peut aussi faire ça en CSS ; d'ailleurs, PopUP utilise cette technique.
Merci à dysmann pour le code.
Code : HTML 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | <!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link title="CSS" href="Style.ex4.css" type="text/css" rel="stylesheet" />
<title>Menu horizontal simple</title>
</head>
<body>
<div id="header"><img alt="Banniere" src="logo_sdz_fr.png" /></div>
<div id="menu"><a href="#">Accueil</a></div>
<div id="menu_accueil">blabla menu accueil</div>
<div id="contenu">Blabla du contenu</div>
<div id="footer">Copyright tout pourri.</div>
</body>
</html>
|
Code : CSS 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 | BODY {
background:#E8F0F4;
margin:0;
padding:0;
}
#header {
background:#E8F0F4 url(bg_logo.png) repeat-x;
text-align:center;
}
#menu {
margin-top:5px;
padding-left:25px;
background-color:#FFFFFF;
border:dashed #000000 1px;
border-right:none;
border-left:none;
font-family:Arial, Verdana;
}
#menu_accueil {
position:absolute;
display:none; /* On fait disparaître le <div> */
left: 0px;
top:140px;
width:180px;
border:dashed #000000 1px;
border-top:none;
height:auto;
font-family:Arial, Verdana;
background-color:#FFFFFF;
}
#menu:hover+#menu_accueil, #menu+#menu_accueil:hover{display:block}
#contenu {
background-color:#FFFFFF;
border:solid #000000 1px;
margin-top:10px;
font-family:Arial, Verdana;
}
#footer {
text-align:center;
background-color:#FFFFFF;
border:dashed #000000 1px;
margin-top:10px;
font-family:Arial, Verdana;
}
|
Citation : dysmannC'est simple, tout d'abord on cache le div :
display:none; puis, quand on bouge sur le titre (h1
:hover) et sur le div lui-même (div
:hover) on affiche le div:
display :block;
Ça nous donne donc :
h1:hover, div:hover{display:block}
Mais il y a un problème ! Ce n'est pas au titre que l'on veut appliquer
display:block, mais au
div, quand le titre qui est
juste avant dans le code html est survolé. Pour ça, on utilise l'opérateur + :
Code : CSS1 | h1:hover + div, div:hover{display:block}
|
Cela ne marche que si le div est juste après le titre (si par exemple, il y avait disons une image entre le titre et le div, on aurait marqué : h1:hover+img+div, div:hover.
Voilà pour les explications, encore merci à dysmann !
Dans ce chapitre, je vais juste vous donner le code complet et vous parler de la compatibilité !
Code complet
Code : JavaScript1
2
3
4
5
6
7
8 | function afficher(element)
{
document.getElementById(element).style.display = 'block';
}
function cacher(element)
{
document.getElementById(element).style.display = 'none';
}
|
Code : HTML 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | <!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link title="CSS" href="Style.ex3.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="javascript.js"></script>
<title>Menu horizontal simple</title>
</head>
<body>
<div id="header"><img alt="Banniere" src="logo_sdz_fr.png" /></div>
<div id="menu"><a href="#" onclick="return(false);" onmouseover="javascript:afficher('menu_accueil');" onmouseout="javascript:cacher('menu_accueil');">Accueil</a></div>
<div id="menu_accueil" onmouseover="javascript:afficher('menu_accueil');" onmouseout="javascript:cacher('menu_accueil');">blabla menu accueil</div>
<div id="contenu">Blabla du contenu</div>
<div id="footer">Copyright tout pourri.</div>
</body>
</html>
|
Code : CSS 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 | BODY {
background:#E8F0F4;
margin:0;
padding:0;
}
#header {
background:#E8F0F4 url(bg_logo.png) repeat-x;
text-align:center;
}
#menu {
margin-top:5px;
padding-left:25px;
background-color:#FFFFFF;
border:dashed #000000 1px;
border-right:none;
border-left:none;
font-family:Arial, Verdana;
}
#menu_accueil {
position:absolute;
display:none; /* On fait disparaître le <div> */
left: 0px;
top:138px;
width:180px;
border:dashed #000000 1px;
border-top:none;
height:auto;
font-family:Arial, Verdana;
background-color:#FFFFFF;
}
#contenu {
background-color:#FFFFFF;
border:solid #000000 1px;
margin-top:10px;
font-family:Arial, Verdana;
}
#footer {
text-align:center;
background-color:#FFFFFF;
border:dashed #000000 1px;
margin-top:10px;
font-family:Arial, Verdana;
}
|
Et voilà, ça marche !
Compatible ou pas ?
Comme vous le savez sûrement, il existe plusieurs navigateurs Internet. Les plus utilisés d'entre eux sont Firefox et Internet Explorer, mais (eh oui, il y a un mais

) il y en a d'autres.
Le problème, c'est que tout les navigateurs n'affichent pas la même chose : la plupart du temps, c'est Internet Explorer qui ne comprend pas certaines choses

et c'est parfois très embêtant !
Voici la liste des navigateurs les plus connus et leur compatibilité avec le menu :
- Firefox : OK !
- Internet Explorer 6 : OK !
- Internet Explorer 7 : OK !
- Opéra : OK !
- Safari : OK !
- Konqueror : OK !
- Flock : OK !
Voilà, le tutoriel touche à sa fin

, et vous savez maintenant faire un menu comme celui du design PopUp !
N'hésitez pas à me faire des remarques et à me montrer vos problèmes (si vous en avez !).