Plan de site Navigation
Blog & Blues Techniques et Standards de la Qualité Web

Accueil > weblog


- Lire le billet précédent - Lire le billet suivant -

Menus de navigation (1): sémantique, structure, implémentation ?

Par Laurent Denis, le 06 novembre 2004.

Parmi les thèmes en vogue, la structure à donner à un menu de navigation fait régulièrement couler beaucoup d'encre, et donne lieu à des solutions aussi diverses qu'inventives : listes ordonnées, listes de définition, paragraphes... Tout ou presque est mis à contribution dans la recherche d'une structure que l'on voudrait à la fois valide, sémantique, accessible, belle et ergonomique.

Tentons d'y faire la part du désir, du conforme, et de l'actuel (ou du pratique, si vous préférez).

Fantasmons

Fait d'emprunts hétéroclites à un brouillon périmé de spécification et à une lecture présentative d'(X)HTML 4.01 transitional, ce code est un pur fantasme aussi invalide qu'inopérant :

<menu>
   <lh>Navigation</lh>
   <li>
      <ul>
      <lh>Rubrique 1</lh>
      <li>item</li>
      ...
      </ul>
   </li>
   <li>
      <ul>
      <lh>Rubrique 2</lh>
      <li>item</li>
      ...
      </ul>
   </li>
</menu>

Ne cherchez pas la balise <lh> dans une spécification HTML quelle qu'elle soit, et se soyez pas tenté de l'utiliser : elle n'existe que dans un ancien projet avorté de spécification HTML3.0. Cet exemple fictif a cependant le mérite de bien montrer ce que l'on cherche parfois : associer explicitement à une liste un intitulé qui en annonce le contenu.

L'élément <menu> est en revanche valide en (X)HTML transitional, mais déprécié en tant qu'élément de présentation, car il ne fait en réalité rien qu'une simple liste ul ne puisse faire. Il exprime cependant un autre souhait : tenter de définir structurellement un menu de navigation en tant que tel, afin de le différencier d'autres listes de liens réputées différentes.

On imagine aisément quelques exploitations intuitives de cette combinaison menu - lh :

  • Au lieu d'afficher la totalité des liens d'une page Web sous une forme séparée, un navigateur comme Opera, un lecteur d'écran comme Jaws, etc. pourraient en extraire uniquement le menu de navigation, le rendant ainsi disponible sous une forme plus accessible selon les besoins exprimés par l'utilisateur dans les paramètres de l'outil.
  • De même, un robot d'indexation exploiterait plus aisément les liens internes du site ;
  • Un script aurait la tâche plus facile lorsqu'il s'agit d'extraire à l'inverse d'un document le contenu propre et d'en supprimer les éléments de navigation.

Quittons à présent le fantasme pour en venir à la réalité de l'interopérabilité et de la norme HTML. Gardons cependant à l'esprit nos souhaits désormais explicites.

Identifier une menu de navigation comme tel

Ce que nous voulons introduire dans notre contenu n'est en fait rien d'autre qu'une donnée supplémentaire sur une liste de liens : celle-ci se rapporte à la navigation dans le site.

Rappelons cet extrait de la spécification HTML4.01 :

title [...] This attribute offers advisory information about the element for which it is set.

[...]

Note. The META element is a generic mechanism for specifying meta data. However, some HTML elements and attributes already handle certain pieces of meta data and may be used by authors instead of META to specify those pieces: the TITLE element, the ADDRESS element, the INS and DEL elements, the title attribute, and the cite attribute.

Voilà donc une réponse possible à notre besoin d'ajouter une métadonnée à notre liste de liens :

<ul title="menu">
   ...
</ul>

Nous rencontrons cependant le problème propre aux métadonnées : comment donner un sens exploitable mécaniquement à cette valeur menu ? Comment en d'autres termes faire en sorte que notre métadonnée soit comprise ? Il nous manque ici un profil de métadonnées définissant la valeur menu et la rendant du coup universellement interprétable. Nous en restons donc pour l'instant dans le domaine des potentialités frustrantes du HTML encore à exploiter.

Mais... attendez un instant : nous n'avons pas encore tout lu de notre spécification, qui nous réserve à présent une intéressante surprise.

Au fait : et si ce menu n'avait en réalité rien à faire là où nous le mettons ?

Nous avons en effet oublié un chapitre consacré aux types de liens link dans la spécification HTML4.01 :

Les auteurs peuvent utiliser les types de liens reconnus suivants, qui sont listés avec leur interprétation conventionnelle.

[...]

Les agents utilisateurs, les moteurs de recherche, etc. peuvent interpréter ces types de liens de diverses manières. Par exemple, les agents utilisateurs peuvent fournir l'accès aux documents reliés au moyen d'une barre de navigation.

[...]

Chapter
Se rapporte au document faisant office de chapitre dans une succession de documents.
Section
Se rapporte au document faisant office de section dans une succession de documents.
Subsection
Se rapporte au document faisant office de sous-section dans une succession de documents.

Si je cherche à spécifier que mon site comporte telles et telles rubriques, sous-rubriques, etc., je dois me souvenir qu'il n'est rien d'autre qu'une succession de documents, et que c'est en fait l'élément link et ce que l'on appelle couramment les liens relatifs qui répondent à mon besoin :

<link rel="chapter" href="..." title="Rubrique 1">
<link rel="section" href="..." title="item 1.1">
...
<link rel="chapter" href="..." title="Rubrique 2">
<link rel="section" href="..." title="item 2.1">

Ceci sera exploité sous forme de barre de liens relatifs par différents navigateurs... et donne à notre notion de menu de navigation sa seule présence sémantique réelle, c'est à dire Cette ressource (ce que nous appelons la page) est liée aux ressources suivantes... et ces liens sont respectivement de natures suivantes....

On comprend mieux à présent la disparition de l'élément menu en HTML strict : il ne faisait que varier la manière de présenter une liste de liens, sans ajout structurel par rapport à ul, et sans apporter la possibilité d'associer aussi précisément que link différentes ressources en définissant exactement la nature de leurs liens.

En réalité, on peut se demander si :

  • Les menus de navigation ont bien leur place dans le contenu d'un document, dans la mesure où il s'agit pour partie de métadonnées exprimables et exploitables par ailleurs ;
  • Les liens relatifs ne seraient pas en fait le seul moyen pertinent de définir ce que nous cherchons à faire à travers un tel menu.

Mais... tous les navigateurs n'exploitent pas ces éléments link rel=, tous les utilisateurs n'en connaissent pas l'existence, et il serait illusoire de se reposer actuellement sur ce mécanisme en guise de navigation d'un site Web. Il faut donc trouver un contournement.

Gérer malgré tout l'inclusion d'un menu et ses rubriques dans un contenu

Revenons donc à une pratique de remplacement. Au moins, pouvons-nous donner l'information à l'utilisateur, d'une manière insatisfaisante, mais ergonomique ? Revenons magré tout à notre intention de titrer notre menu et de structurer ses rubriques...

Avez-vous bien dit Titrer ? N'avons-nous pas tous lu dans l'éternelle Spécification HTML4.01 :

Les titres : les éléments H1, H2, H3, H4, H5 et H6

[...]

Un élément de titre décrit brièvement le sujet de la section qu'il introduit.

Nous avons donc simplement des titres à donner à notre menu et à ses rubriques :

<h1>Navigation</h1>
<h2>Rubrique 1</h2>
<ul>
   ...
</ul>
<h2>Rubrique 2</h2>
<ul>
   ...
</ul>

Ah... Nous aimerions tout de même bien donner à cette succession de titres et de listes une structure de sections en bonne et due forme. Il nous manque... un élément structurant, générique... En somme, il nous manque :

Les éléments DIV et SPAN, en conjonction avec les attributs id et class, offrent un mécanisme générique qui rajoute de la structure aux documents. Ces éléments définissent le contenu comme étant en-ligne (SPAN) ou de bloc (DIV) mais n'imposent aucune autre expression de présentation sur le contenu. Ainsi, les auteurs peuvent utiliser ceux-ci en conjonction avec les feuilles de style, l'attribut lang, etc., pour exploiter HTML selon leurs besoins et leurs goûts propres.

Rajoutons donc de la structure à nos listes et à nos titres, puisque div est explicitement destiné à cet usage :

<div title="menu" id="menu">
   <h1>Navigation</h1>
   <div>
      <h2>Rubrique 1</h2>
      <ul>
      ...
      </ul>
   </div>
   <div>
      <h2>Rubrique 2</h2>
      <ul>
      ...
      </ul>
   </div>
</div>

Récapitulons :

  • Nous avons défini sémantiquement les liens entre les ressources qui composent notre collection à l'aide de link ;
  • Nous avons offert à l'utilisateur, autant que possible en HTML4.01, une portion de contenu définie comme étant une menu de navigation du site, en la dotant d'une structure aussi explicite que possible et en le renseignant aussi clairement que possible sur la nature de son contenu.

En l'état actuel de l'art, pouvions-nous faire mieux ?

Conclusion (provisoire)

Retenons pour l'instant qu'il faut différencier deux problématiques :

  • La sémantique des liens internes d'une série de ressources, qui nous renvoie à l'exploitation de l'élément link ;
  • L'accessibilité et l'ergonomie de la navigation sur un site, qui nous conduit à inclure dans le contenu de nos pages de simples listes de liens accompagnée de titres.

En l'état, il me semble que vouloir forcer HTML à réunir ces deux objectifs dans une structure unique ne peut être qu'abusif ou illusoire.

Trackbacks

1. Le 17 novembre 2004 à 00:37, de Clarky's Corner

En Vrac

Padawan, en relatant une expérience de l'association hollandaise Bits of Freedom, nous montre qu'il faut avoir confiance en la LCEN... ou pas. L'incontournable Eric Meyer fait encore parler de lui ; il propose un excellent système de diapositives...

2. Le 02 mars 2005 à 21:53, de L'Usine de Bétel

Quels menus pour le HTML ?

La dispartition de l'élément menu en 1997 a obligé les codeurs de pages web à composer avec l'élément ul (liste non ordonnée) pour bâtir leurs menus de navigation. Menu étant plus évocateur que ul, cette perte a été mal vécue par beaucoup et la...

Les trackbacks pour ce billet sont temporairement fermés en raison d'une série d'attaques de spam.

Commentaires

Laurent Denis, le 06 novembre 2004

Tiens, j'oublais: ce billet ne dit finalement rien des menus en liste de définition... pour la simple raison que la conclusion est qu'ils sont inutiles et illusoirement sémantiques.

Monique, le 06 novembre 2004

Bonjour,

> En l'état actuel de l'art, pouvions-nous faire mieux ?

Non, je ne crois pas.
Il faudra attendre XHTML 2.0 et le "List module" www.w3.org/TR/xhtml2/mod-...

Amicalement,
Monique

Laurent Denis, le 06 novembre 2004

C'était plus ou moins le sens de cette remarque, en effet smiley clin d'oeil

Quoique XHTML2.0 ne fait peut-être que déplacer le problème.

David Latapie, le 06 novembre 2004

Il m'énerve…
Je voulais faire un article sur les bonnes idées du HTML 3.0 va falloir que je m'active maintenant smiley sourire

Raphael, le 06 novembre 2004

"ce billet ne dit finalement rien des menus en liste de définition... pour la simple raison que la conclusion est qu'ils sont inutiles et illusoirement sémantiques"

>> Je comprends que tu aimes aller contre les modes de toutes sorte. Ce qui est dommage c'est que tu restes toujours sur tes positions alors que plusieurs éléments ont bien montré qu'elles n'étaient ni inutiles (dans ce cas précis), ni illusoirement sémantique.
M'enfin... c'est ton avis donc il n'y a pas lieu de revenir dessus.

Bouda, le 06 novembre 2004

Bonsoir,

un article fort intéressant comme toujours. smiley sourire

Cependant, j'ai une petite question : Si je désire mettre un lien sur le un nom de rubrique, dois-je procède comme ceci ? :

<div title="menu" id="menu">
<h1>Navigation</h1>
<div>
<h2><a...>Rubrique 1</a></h2>
<ul>
...

Laurent Denis, le 06 novembre 2004

@Raphael> il s'agit de bien autre chose que d'aller "pour" ou "contre" une mode !

Allez : quel est l'apport spécifique d'une liste de définition dans un menu de navigation:
1. du point de vue de la "machine" ?
2. du point de vue de "l'utilisateur" ?

... le (1) n'ayant pour raison d'être que de travailler pour simplifier la vie du (2), et le tout ne détournant pas la norme nécessaire et souvent frustrante ?

Laurent Denis, le 06 novembre 2004

@Bouda > "donne-moi un contenu, et nous regarderons comment le structurer."

Il n'y a aucune réponse à ta question en dehors de la nature de ton contenu précis.

Bouda, le 06 novembre 2004

J'ai réalisé le menu de la maquette de mon site comme suit, et j'aimerais tester ton idée :

<div id="nav">
<ul>
<li><a href="#">Section 1</a>
<ul>
<li><a href="#">Sous-section 1.1</a></li>
<li><a href="#">Sous-section 1.2</a></li>
</ul>
</li>
<li><a href="#">Section 2</a>
<ul>
<li><a href="#">Sous-section 2.1</a></li>
<li><a href="#">Sous-section 2.2</a></li>
</ul>
</li>
</ul>
</div>

Merci,
Antoine. smiley sourire

Raphael, le 06 novembre 2004

"Allez : quel est l'apport spécifique d'une liste de définition dans un menu de navigation:
1. du point de vue de la "machine" ?
2. du point de vue de "l'utilisateur" ?"
>> Cela a été discuté ici-même : forum.alsacreations.com/t...

En l'état actuel du XHTML 1.0, les listes de définition couvrent un manque flagrant. Leur champ d'action autorisé par le W3C est large et leur efficatité l'est également : plutôt que d'utiliser des balises génériques ou des titres de section, la structure en DL est très claire : titre / élément se rapportant au titre.

ElMoustiko, le 06 novembre 2004

C'est marrant cette question qui revient tout le temps... <dl> pour les menus... hmmm

Laurent tu dis grosso modo que c'est totalement inadapté pour les menus, bon c'est un avis, je trouve que c'est quand même bien pratique de temps en temps à défaut d'un balisage adapté (inexistant), et ce que je trouve le plus rigolo, c'est que tu as autant d'ardeur à être contre qu'a les cloner avec des <div> dans ton exemple !!

Franchement, l'utilisation des listes de definitions revient au même (mieux ? ) que ton exemple à base de <div>...

Pour ce qui est du phénomène de mode des <dl>... le xhtml est une mode aussi en ce moment, tu vas le proscrire pour autant ? Il n'y a pas que des mauvaises choses dans les "modes" et certe il y a des abus dans l'utilisation des <dl> (Genre pour faire un cadre arrondi [smiley_sifflotant]), mais il y a d'autres utilisations tout à fait adapté en l'état actuel des choses, et peut être vaudrait-il mieux "taper" sur les pires utilisations ?

Anubis, le 07 novembre 2004

J'ai une idée. Plutôt que de maintenir à la fois une liste des ressources dans le menu et dans les balises link, pourquoi ne pas spécifier quelque chose comme <link rel="navigation" href="#menu"/>.

Ceci pourrait d'une part remplacer les liens d'accessibilité en début de page, permettre comme tu le proposes de sortir la navigation du contenu, même si la solution actuelle reste possible, et enfin permettre grâce à une reconnaissance sémantique de la structure de l'élément de navigation indiqué la génération d'un menu de navigation au niveau du navigateur.

Laurent Denis, le 07 novembre 2004

@Raphael> la structure en dl est très claire en effet... sauf que dt n'est pas un élément de titrage, n'est pas reconnu comme tel, et qu'un intitulé de rubrique n'est pas "défini" par les items de menu correspondant.
La relation marquée par un titre <h?> est de définir ce qui le suit... La relation marquée par <dt> est l'inverse.

@ElMoustiko > les "modes" sont mêmes utiles, car elles permettent de tester l'utilisation des éléments HTML. Et de conclure parfois qu'il y a des usages à éviter smiley clin d'oeil

Raphael, le 07 novembre 2004

"@Raphael> la structure en dl est très claire en effet... sauf que dt n'est pas un élément de titrage, n'est pas reconnu comme tel, et qu'un intitulé de rubrique n'est pas "défini" par les items de menu correspondant.
La relation marquée par un titre <h?> est de définir ce qui le suit... La relation marquée par <dt> est l'inverse."

>> Pourtant nous savons que le terme de D"efinition Title" n'est pas à prendre au sens strict.

Le W3C lui-même : "Another application of DL, for example, is for marking up dialogues, with each DT naming a speaker, and each DD containing his or her words."

Désolé de revenir là-dessus, mais il parait très clair que l'emploi des DL ne se limite pas à une "définition" au sens premier.

Peut-être est-ce tout simplement le nom de la balise qui aurait dû être différent pour ne pas verser dans un purisme excessif.

Laurent Denis, le 07 novembre 2004

La spécification est en effet très ambigüe sur la nature de <dl>:
- est-ce un élément de texte spécifique marquant cette relation "terme défini" <-> "définition" ?
- est-ce un élément de structuration générique marquant une simple relation "quelque-chose" <-> "quelque-chose" ?
Le second cas reviendrait en fait à dupliquer l'élément générique déjà existant, qui est <div>.

En conclusion, l'usage de <dl> pour les menus n'est pas contraire à la lettre de la spécification (il est formellement valide), mais repose sur un flou créé par la spécification. A l'inverse, une structure appuyée sur <div> ne fait qu'exploiter des éléments au rôle beaucoup plus clair.

Cela dit, ce qui m'intéressait ici n'était pas la question des <dl>, mais plutôt le problème de fond des menus de navigation: leur redondance avec les métadonnées <link>.

Ganf, le 07 novembre 2004

Tout d'abord un point. Quand tu dis que ça manque de structure et que tu rajoutes un <div> autour de chaque titre+item, quel est ton but ? certes le fonctionnement des titres est plat, non hiérarchique, mais c'est un choix du langage que d'utiliser cette structure plate. Il n'y a aucune raison de rajouter un div alors que les titres sont concus pour ne pas en avoir.

Maintenant, si j'ai toujours été partisant d'utiliser des titres réels plutot que séries de dl partout, les utiliser pour les menus peut poser un problème. Il faut penser que les menus apparaissent dans les explorateurs de menus. Là la question est "est-ce profitable ou pas à l'utilisateur que de mélanger des titres de menu et des titres de contenu ?"
M'est avis que dans l'explorateur de titre, l'essentiel des titres devraient être des titres de contenu, ne pas flooder l'utilisateur avec plein d'informations annexes. On peut rajouer un titre "menu" mais si on détaille trop on risque de plus perturber la navigation que de l'aider.
Je n'aime pas les dl pour ce genre de choses, mais c'est peut être ce qui fait le moins de mal.

(note: si le menu est le contenu de la page, ma réflexion s'inverse est c'est alors des titres qu'il faut utiliser)

Laurent Denis, le 07 novembre 2004

"Quand tu dis que ça manque de structure..." En fait, je me contente d'indiquer ce qui semble être la réponse appropriée à ceux qui trouvent qu'un menu devrait avoir "plus de structure". Il en est de même du besoin de titrer systématiquement les rubriques de menu. Mais je ne dis pas pour autant que ce besoin soit, de mon point de vue personnel, justifié.

C'est l'une des raisons pour lesquelles cet article est une première partie, et va être suivi d'un second billet smiley clin d'oeil

Cela dit, je ne suis pas aussi sûr que toi que les titres <h?> soient "conçus" pour ne pas être associés à des <div>: le rôle donné explicitement aux <div> par la spécification me semble plutôt aller dans ce sens, en fait: "rajouter de la structure", et "regrouper des éléments".

Gloom, le 07 novembre 2004

> Plutôt que de maintenir à la fois une liste des ressources dans le menu et dans les balises link, pourquoi ne pas spécifier quelque chose comme <link rel="navigation" href="#menu"/>.

Ca me semble une très bonne idée. smiley sourire

> Pourtant nous savons que le terme de D"efinition Title" n'est pas à prendre au sens strict.
> Le W3C lui-même : "Another application of DL, for example, is for marking up dialogues, with each DT naming a speaker, and each DD containing his or her words."
> Désolé de revenir là-dessus, mais il parait très clair que l'emploi des DL ne se limite pas à une "définition" au sens premier.

On peut dire qu'une personne est (en partie) définie par son discour, donc, c'est là encore le contenu du dd qui définit le contenu de dt.

Ceci dis, il me semble que dl est plus adapté que ul, on peut très bien avoir par exemple :

<dl title="menu" id="menu">
<dd><h1>Navigation</h1></dd>
<dd>
<dl>
<dd><h2>Rubrique 1</h2></dd>
<dd>
<dl>
...
</dl>
</dd>
</dl>
<dl>
<dd><h2>Rubrique 2</h2></dd>
<dd>
<dl>
...
</dl>
</dd>
</dl>
</dd>
</dl>

Chaque éléments dd définice la liste de définition avec l'id="menu", chaque élément du menu définissent ce menu, c'est donc une bonne utilisation d'une liste de définition pour un menu. Personnelement, je ne vois pas pourquoi on utiliserais une liste à puce pour un menu, surtout si c'est pour effacer les puces en css, les listes de définitions me semble donc plus apropriée, note que, une liste ordonnée pourrais convenir aussi si on n'a l'intention de numéroté le menu de navigation comme un chapitrage.

Par ailleurs, tout comme Ganf, je me pose aussi des questions sur l'utilisation de h? dans un menu, en dehors de ce qu'il a déjà souligner, je me dis que ça donne peut-être trop de poid au contenu du menu pour des bots de moteurs de recherche par exemple, enfin, les h? définisse des section d'une page, pas des pages entière, or, en général, un menu est composé de liens vers des pages entière.

Enfin, pourquoi ne pas utiliser les balises link pour faire un menu à l'aide de
link {display:...}

Peut-être parce qu'on ne peux pas faire de lien à partir des balises link sans avoir recours à des CSS propriétaire.

Je n'ai ni essayeé, ni creusé la question, je ne sais donc pas trop ce qu'il en est, ce serais peut-être bien (dans le deuxième article ?) d'aborder le sujet.

Laurent Denis, le 07 novembre 2004

@Gloom> En l'absence d'élément <dt>, une liste <dl> ne définit rien du tout. Utiliser des listes de définition sans <dt> relève du non-sens.

D'autre part, un élément <h?> sert à donner un intitulé à une section, pas à la définir. Et le fait qu'un menu soit composé de liens vers des "pages entières" n'a aucun rapport avec le fait que ces liens forment une portion de contenu comme une autre, tout aussi susceptible d'avoir un intitulé.

Alfonse, le 08 novembre 2004

La solution de Bouda (listes imbriquées) me paraît pour l'instant être la plus appropriée. Cela nous dispense d'utiliser les imprécisions des spécifications du w3c sur les listes de définition.

D'autre part il y a bien un rendu hiérarchique valable et compréhensible (telle sous-section "appartient/fait partie" de telle section).

Et puis c'est assez facile à mettre en forme, et ça le serait encore plus avec un support correct des sélecteurs css par tous les navigateurs.

clb56, le 08 novembre 2004

ba je me réimmisce dans cette discussion sur les dl qui va surement finir par agacer prodigieusement Laurent Denis smiley sourire

Je suis assez proche de la position de raphaël sur ce que l'on peut tirer de la relation <dt>/<dd>. Le raisonnement serait le suivant : une relation est établie entre un terme <dt> et un (des) item(s) qui lui correspond(ent) <dd>, cette relation peut être pensée sur un mode analogue à celui établi entre un mot et une série de définition qui lui correspondent.

Sémantiquement c'est peu mais est ce rien ?

à Laurent Denis :

Tu avances souvent l'argument de l'absence de gain de sens dans l'utilisation de dl pour les menus (entre autre) mais il n'y a là finalement rien de définitif (l'argument définitif consisterait plutôt à monter un risque de perte de sens).

Concernant la structuration par titre je suis par contre d'accord qu'elle doit apparaitre. Mais dans ce cas la forme suivante me paraitrait suffisante :

<h2>Ici la section des menus</h2>
et (par exemple)
<dl>
<dt>menu1</dt>
<dd>lien1</dd>
.
.
</dl>
<dl>
<dt>menu2</dt>
.
.

ou pour une forme plus condensée
<dl>
<dt>menu1</dt>
<dd>...
.
<dt>menu2</dt>
<dd>...
.
</dl>

<h2>Ici la section contenant le contenu :-)</h2>

sans rien présupposer de la position relative des deux <h2> dans le document HTML.

Laurent Denis, le 08 novembre 2004

@clb56> ça ne m'agace pas : je n'ai pas écrit cet article en pensant spécifiquement aux listes de définitions, mais l'utilisation de celles-ci repose sur des contre-arguments infondés à l'idée essentielle, qui est (2e partie de l'article à paraître) :
- qu'un menu de navigation n'est pas un plan de site (ça se fait dans un plan de site);
- qu'un menu de navigation n'est pas une table des matières (ça se fait dans une table des matières);
- qu'un menu de navigation n'est pas une indication des liens sémantiques entre des ressources (ça c'est <link> qui le fait, voir ci-dessus)

Bref, qu'un menu de navigation n'a pas, en tout état de cause, besoin de cette complexité de structure souvent demandée, et que j'ai reprise à mon compte dans ce premier billet.

Une fois ôté ce besoin à mon sens abusif... il reste une structure minimale très simple à mettre en place, qui ne nécessite aucun "sectionnage" ou "titrage". Et en aucun cas une structure pseudo-hiérarchisée du type liste de définition.

Voilà, j'ai dévoilé la suite smiley clin d'oeil

Ah si... On parlera aussi des menus déroulants, une autre véritable horreur :D

Gloom, le 09 novembre 2004

> Bref, qu'un menu de navigation n'a pas, en tout état de cause, besoin de cette complexité de structure souvent demandée, et que j'ai reprise à mon compte dans ce premier billet.
> Une fois ôté ce besoin à mon sens abusif... il reste une structure minimale très simple à mettre en place, qui ne nécessite aucun "sectionnage" ou "titrage". Et en aucun cas une structure pseudo-hiérarchisée du type liste de définition.

Alors :
<p id="menu"><a href="bla.htm">Bla</a> <a href="bli.htm">Bli</a> ...</p>

On peut faire joli en css, par exemple (c'est volontairement très simple) :
p#menu {
border-bottom:solid 1px;
}
p#menu a {
border:solid 1px 1px 0 1px;
}

C'est bien plus simple que des listes. Mais bon, compliquons un peu en s'inquiettant de l'accessibilité :
html :
<p id="menu"><a href="bla.htm">Bla</a><span>,</span> <a href="bli.htm">Bli</a><span>,</span> ...</p>

css :
p#menu {
border-bottom:solid 1px;
}
p#menu a {
border:solid 1px 1px 0 1px;
}
p#menu span {
display:none;
}

clb56, le 02 décembre 2004

je me permet de rebondir sur la remarque : "un menu de navigation n'est pas un plan de site".

J'avance l'hypothèse suivante : est ce que le plan d'un site n'est pas finalement le seul vrai menu d'un site. Là où toutes les pages sont directements accessibles, où toutes les inter relations sont visibles,où les commentaires sont présents en dur.

David Latapie, le 17 janvier 2005

Bonjour Laurent,

Très intéressant tout ça.

J'avais il y a quelque temps écrit un article sur la question :

blog.empyree.org/?2004/09...

À l'époque, tu n'avais pas encore publié cette page.

Est-ce que ce que tu indique résoud mon problème ?

Laurent Denis, le 18 janvier 2005

David : je dirais que oui, à une réserve près. Un titre est bien approprié pour annoncer le contenu de ce qui le suit, la liste dans ton cas. Mais il ne sera pas spécifiquement pris en compte comme le <caption> que tu envisages. Par exemple, dans un lecteur d'écran, aucun mode de navigation spécifique aux listes ne permettrait de remonter de l'intérieur de la liste à ce caption... (Il n'existe pas de mode de navigation spécifique aux listes, en fait, justement parce que ce <caption> ou <lh> n'existe pas).

David Latapie, le 18 janvier 2005

Qu'est ce que tu fais debout à cette heure-ci ?

Merci pour la réponse

Veronique Cuomo, le 27 février 2005

De fil en aiguille, j'arrive sur ce billet... après quelques soucis de CSS concernant un menu, au travers desquels vos lumières ont favorisé mon apprentissage.Si, je résume, pourquoi se compliquer la vie si cela n'a pas de valeur sémantique au niveau du langage ?

En ergonomie cognitive, un menu de navigation permet à l'internaute de fixer le cadre de référence du site qu'il s'apprête à visiter ... disons, un sommaire alors ? L'écran étant vu comme un tunnel par rapport au livre.

Les commentaires pour ce billet sont temporairement fermés en raison d'une série d'attaques de spam.