Lien d'accès rapide
Un lien d'accès rapide permet d'accéder rapidement à une zone de contenu de la page ou de sauter une zone dans la page.
Règles d’implémentation pour l’accessibilité
Les critères 12.6 et 12.7 du RGAA requièrent la présence de liens d’évitement ou d’accès rapide aux zones de regroupement de contenus présentes dans plusieurs pages web, à savoir :
- zone d’en-tête (implémenté avec
<header role="banner">
) ; - zone de navigation principale (implémenté avec
<nav role="navigation">
) ; - zone de contenu principal (implémenté avec
<main role="main">
) ; - zone de pied de page (implémenté avec
<footer role="contentinfo">
) ; - et zone de moteur de recherche (implémenté avec
<form role="search">
).
Le critère 12.7 se concentre plus particulièrement sur le lien d’évitement ou d’accès rapide au contenu principal (implémenté avec <main role="main">
).
Dans les motifs de conception proposés ici, le lien d’accès rapide, parfois appelé aussi lien d’évitement (skip link en anglais) lorsqu’il permet de sauter une zone de la page, est invisible par défaut sur la page et n’apparaît qu’à la prise de focus pour une navigation au clavier.
Liens multiples d’accès rapide
Pour implémenter plusieurs liens d’accès rapide au début du code (typiquement un lien d’accès rapide au contenu, un lien d’accès rapide au menu de navigation voire un lien d’accès rapide au pied de page), on va créer une zone invisible à l’oeil nu qui apparaitra uniquement lors d’une navigation au clavier.
Dans ce cas, les liens seront implémentés entre les éléments HTML nav
avec un système de liste à puces (éléments HTML ul
et li
).
Visuel
Pour tester les liens d’accès rapide, placez-vous en haut de cette page et naviguer au clavier (touche " tab " pour se déplacer, touche " entrée " pour " cliquer " sur le lien).
Code HTML
Ce code sera placé immédiatement après la balise body
de la page HTML.
- Le lien « Contenu » pointera vers la zone principale identifée comme suit :
<main role="main" id="contenu">
- Le lien « Menu » pointera vers le menu de navigation principale identifé comme suit :
<nav role="navigation" id="navigation" aria-label="Menu principal">
- Le lien « Recherche » pointera vers le formulaire de rechercche dans tout le site identifé comme suit :
<form role="search" id="recherche">
- Le lien « Pied de page » pointera vers la zone de pied de page identifée comme suit :
<footer role="contentinfo" id="piedDePage">
<body>
<div class="rapide">
<nav role="navigation" aria-label="Accès rapide">
<ul>
<li><a href="#contenu">Contenu</a></li>
<li><a href="#navigation">Menu</a></li>
<li><a href="#recherche">Recherche</a></li>
<li><a href="#piedDePage">Pied de page</a></li>
</ul>
</nav>
</div>
[...]
Code CSS
Pour que la zone d’accès rapide apparaisse bien au focus clavier, on utilisera la pseudo-classe :focus-within
sur celle-ci.
Voir la documentation MDN sur :focus-within.
:root {
--COLOR-1: #E3E3F6;
--COLOR-2: #141429;
--COLOR-3: #000;
}
div.rapide {
display:inline-block;
background-color:var(--COLOR-1);
padding:.5em;
position:absolute;
left:-99999px;
z-index:2033
}
div.rapide:focus-within {
position:relative;
top:0;
left:0;
width:100%
}
div.rapide nav {
position:relative;
z-index:2035
}
div.rapide ul {
list-style:none;
display:flex
}
div.evitement ul li {
padding-right:1em
}
div.rapide ul a {
color:var(--COLOR-3);
text-decoration:underline;
padding:.25em
}
div.rapide ul a:focus {
outline:3px solid var(--COLOR-2)
}
Lien unique d’accès raide au contenu
On peut vouloir ne proposer qu’un seul lien d’accès rapide. Dans ce cas, le motif HTML/CSS ne sera pas implémenté dans un élément nav
. Il sera placé juste après la balise <body>
Code HTML
<body>
<a class="evitement" href="#contenu">Aller au contenu</a>
<header role="banner">
[...]
Code CSS
Il existe plusieurs façons de rendre son lien invisible en voici une :
a.evitement {
display: inline-block;
color: #555;
background: #fff;
padding: .5em;
position: absolute;
left: -99999rem;
z-index: 100;
}
a.evitement:focus {
left: 0;
}