Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Site Web > XHTML / CSS > Un menu horizontal valide et compatible > Lecture du tutoriel

Un menu horizontal valide et compatible

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)
Avatar
Auteur : angemaster
Note : 15 / 20 (11 votes)
Visualisations : 20 004

Plus d'informations Plus d'informations
Bonjour à tous.
Dans ce mini-tuto, vous allez apprendre à faire un menu horizontal en XHTML/CSS pour votre site, qu'il ait un design extensible ou non, et compatible avec tous les navigateurs (testé sur IE5 et Firefox). Je vous donne un code très basique bien sûr, mais qui vous permet de faire pas mal de choses.
Je ne donnerai pas un code tout écrit à la fin, car ce tuto est vraiment court et je ne vois vraiment pas l'intérêt pour vous de le faire. ;)

Il est temps de commencer parce que ce n'est pas en parlant qu'il va se faire, notre menu. :ange:
Sommaire du tutoriel :
Icône du chapitre

Il a l'air de quoi, ce menu ?

Je sais très bien que beaucoup de ceux qui lisent ce tuto se demandent à quoi peut bien ressembler ce menu dont je parle depuis l'introduction... Il peut paraître basique, mais c'est le but recherché : un menu pas trop chargé, qui est agréable à l'oeil du visiteur et surtout simple à coder (faut pas oublier qu'on est tous de gros fainéants :-° ).

Visualiser le menu

C'est le site que j'ai fait pour nos PPE en SI en terminale, on ne se moque donc pas du design fait un peu à la va-vite !!! Et si certains étaient intéressés par des informations sur le sujet, ils peuvent m'envoyer un message privé.

Il est un peu plus étudié (mais vraiment un peu) que celui que je vais vous apprendre dans ce tuto, car il contient du PHP pour faciliter la navigation sur mon site, mais il n'en sera pas différent dans la forme.

Il est temps de passer à l'action avec la construction de notre menu. :D
Pour ça, il faut que vous utilisiez un peu votre souris et votre clavier !!! Bah oui, la page ne va pas défiler toute seule, comme par magie... :ange:

La partie XHTML

La partie théorique



Pour commencer, notre menu ne sera pas bien compliqué !!!
Je vous fais un petit schéma pour que vous compreniez bien :

Image utilisateur


Quelques explications très brèves


Le cadre noir : c'est ce que nous allons appeler le "bloc menu".
Les cadres rouges : ce sont les "blocs liens" qui sont en fait les liens eux-mêmes.

Rappelez-vous bien de ces deux éléments, ils composeront notre menu dans sa totalité et rien de plus.
La partie théorique s'achève ici, je ne crois pas qu'il y ait plus de choses à dire que ça...

Partie pratique



Commençons par créer un bloc : ce bloc sera unique sur chacune de vos pages et on l'appellera... menu :ange: (je suis sûr que vous l'auriez deviné tout seul).
Pour ça, rien de plus simple, on utilise la balise <div></div> et si vous avez suivi les cours de M@teo21, ça devrait être facile de le nommer menu:

Code : HTML
1
2
3
<div id="menu">

</div>

Vous voyez, ce n'était pas si compliqué... Je vous ferai juste remarquer que l'on utilise l'attribut id afin de nommer notre bloc pour le CSS.
Maintenant, comme indiqué sur le schéma plus haut, ce bloc contiendra d'autres blocs, les "blocs liens" :

Code : HTML
1
2
3
4
5
6
7
8
9
<div id="menu">
 
<a href="url_de_votre_page">Votre page</a>
<a href="url_de_votre_page2">Votre page2</a>
<a href="url_de_votre_page3">Votre page3</a>
<a href="url_de_votre_page4">Votre page4</a>
<a href="url_de_votre_page5">Votre page5</a>
 
</div>


Mais tu nous as dit qu'on allait créer un bloc, mais là t'as juste mis des liens, c'est pas des blocs ?!!

C'est vrai, mais j'ai jamais dit qu'ils étaient "blocs" à leur naissance, mais ils le deviendront par la suite, dans la partie CSS ; pour l'instant retenez que c'est un lien comme un autre !!!


Et voilà, la partie XHTML est terminée !!! Ce n'était pas bien compliqué, mais la partie la plus difficile reste à venir (enfin, j'ai une vision de la difficulté un peu légère :-° ). Le CSS est un défi dans ce cas-là, car il faut qu'il soit compatible avec tous les navigateurs !!!
Je n'ai pu tester que sous IE5 et Firefox, mais je pense que c'est largement suffisant. :D

La partie CSS

Allez, on attaque le CSS sans plus attendre. :D

Le CSS du bloc menu



Notre bloc menu se doit d'être extensible et très simple. Nous allons donc nous contenter d'un simple petit dégradé de 30 pixels de hauteur et de 5 pixels de largeur qui se répètera sur l'axe x.
Vous pouvez choisir le fond que vous voulez bien sûr, mais moi j'utilise donc mon image de 5px*30px qui s'appelle fond_menu.png .
Bon : je vois que vous êtes un peu endormis, donc on va faire quelque chose pour vous réveiller : INTERRO SURPRISE !!!

Un petit peu de pratique



Votre mission si vous l'acceptez (même si vous ne l'acceptez pas) est d'écrire le code CSS du menu permettant :
Je vous souhaite bonne chance, même si ce n'est pas très difficile.


Allez hop, correction !



Bon j'espère que vous avez réussi, ce n'était vraiment pas très dur.
Brève explication avant le code :
--> une largeur maximale : il suffit d'utiliser les pourcentages pour la propriété width ;
--> une hauteur fixe de la hauteur de notre image, c'est juste un height de 30px ;
--> un fond qui sera notre image et qui se répète, c'est juste la définition du fond avec url et repeat-x.

Code : CSS
1
2
3
4
5
6
#menu
{
width:100%;
height:30px;
background:url('fond_menu.png') repeat-x;
}


Ouais, on a le menu, mais c'est moche !!! Pourquoi les liens sont aussi laids et tous rassemblés comme ça ???

Tout simplement parce que nous n'avons fait que le bloc menu, on a pas encore touché aux liens... Mais heureusement, c'est la partie qui suit. ;)


Le CSS des liens



Dans cette ultime partie, nous allons faire le CSS des "blocs" des liens. Souvenez-vous : les carrés rouges sur notre schéma du tout début. Ils contiennent donc les liens qui eux aussi auront besoin d'être un peu modifiés.

Un peu de pratique



Comme dans la partie précédente, je vous fais une liste précise de ce qu'on veut, puis vous essayez de trouver le code vous-mêmes.
Alors pour les blocs liens, on veut :

Voilà, à vous de jouer. ;)

L'heure de la correction a sonné



Bon : j'espère encore une fois que vous avez réussi, et si ce n'est pas le cas, ce n'est pas grave, au fond vous êtes là pour apprendre.
Je pose le code avec les annotations dedans, donc pas besoin d'expliquer plus que ça :-° .

Code : CSS
1
2
3
4
5
6
7
8
9
#menu a
   {
   display:block; /*Pour que le "bloc" soit un vrai bloc*/
   float:left; /*Pour que les blocs soient alignés horizontalement (essayez de l'enlever pour voir)*/
   width:19%; /*J'explique en détail après*/
   height:30px; /*La même hauteur que notre menu*/
   border:none; /*On enlève les bordures (enfin, on ne les met pas, même s'il n'y en avait pas)*/
   text-align:center; /*Pour que les liens soient centrés par rapport à l'horizontale*/
   }



Merci à saintfredo pour avoir corrigé ce passage.

Heu... pourquoi tu as mis une valeur de 19% à la propriété width ??? Je n'y comprends plus rien...

Petite explication : en fait, on veut que notre menu soit compatible pour un design fixe comme extensible, donc si on avait mis une valeur en pixels, le design extensible aurait fonctionné mais les liens n'auraient pas pris 100 % de la place disponible.
Ensuite, on a donc 5 liens dans notre menu, donc on pose nos 100 % que l'on divise par le nombre de lien que l'on a, soit ici 100 / 5 = 20, donc 20 % par lien.

Citation : Exemple :
Un menu avec 4 liens => 100 / 4= 25 %.
Un menu avec 5 liens => 100 / 5 = 20 % ==>notre menu.
Un menu avec 6 liens => 100 / 6 = 16,7 %.


Ce sont des mathématiques toutes simples (oui, c'est rare que ce soit simple mais là, quand même...).

Bah tu dis 20 % pour nous, mais dans le CSS tu mets 19%, pourquoi ?

Là, c'est pour notre copain Internet Explorer :diable: . En fait, si on lui fait occuper 100 % (la somme de toute la place occupée par lien) de la taille disponible, il nous fait un saut à la ligne, donc j'enlève 1 %, mais en enlevant 0,5 % ou moins, ça fonctionnerait.

Nous en avons fini avec le bloc lien, enfin pas tout à fait... Il faut encore formater les liens, ce qui pour n'importe qui sera vraiment très simple.

Le CSS des liens



Alors ici, je prends mes goûts pour les couleurs, donc vous prenez les mêmes que moi sans discuter mais vous êtes libres de choisir celles qui vous plaisent.
C'est très simple :

Je n'approfondis pas plus et je vous donne directement le code. J'explique dans le code, mais il n'y a pas grand-chose à en dire.

Code : CSS
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#menu a, #menu a:visited    /*on utilisera les propriétés qui suivront sur les liens dans menu, et les liens visités dans menu*/
{
color:#DFAC1E;    /*la couleur*/
text-align:center; /*on le centre horizontalement*/
padding-top:3px; /*on le centre verticalement*/
}
 
#menu a:hover, #menu a:visited:hover   /*on utilisera les propriétés qui suivront sur les liens survolés dans menu, et les liens survolés et visités dans menu*/
{
color:blue; /*la couleur*/
text-decoration:none;  /*on enlève le soulignement du lien*/
}


Je vous ai mis les deux types de designs obtenus dans le cas d'un design fixe et d'un design extensible pour vous montrer. ;)

Bon voilà, je pense en avoir fini avec ce tuto.
Il est bien sûr améliorable ; si vous n'avez pas d'idée, je vous en donne deux ou trois :

Voilà, je vous ai donné des idées : maintenant à vous de vous amuser. ;)
À la prochaine.

Mise à jour :
11/05/08 : Correction de plusieurs fautes dans le XHTML (merci saintfredo).
Retour en haut Retour en haut


Créé : le 23/01/2007 à 21:02:42
Modifié : le 10/09/2008 à 20:09:09
Avancement : 100%
Licence : Copie non autorisée

L'orthographe, la grammaire et la présentation de ce tutoriel ont été vérifiées par les zCorrecteurs.

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 435 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.1148s (0.101s)