Liens d’évitement - DsfrSkipLinks
🌟 Introduction
Le composant DsfrSkipLinks
fournit des liens d'accès rapide, permettant aux utilisateurs de naviguer directement vers des sections clés de la page. Ce composant est particulièrement utile pour améliorer l'accessibilité, notamment pour les utilisateurs de lecteurs d'écran ou de navigation clavier, en respectant les standards du Design System de l'État Français (DSFR).
🏅 La documentation sur les liens d’évitement le DSFR
La story sur les liens d’évitement sur le storybook de VueDsfr📐 Structure
Le composant affiche :
- Une barre de navigation contenant une liste de liens.
- Chaque lien pointe vers une ancre identifiée dans la page via un attribut
id
.
🛠️ Props
Nom | Type | Description |
---|---|---|
links | { id: string, text: string }[] | Liste des liens d'accès rapide. Chaque objet contient : |
Format de links
Nom | Type | Description |
---|---|---|
id | string | Identifiant de l'élément cible (doit correspondre à un id dans la page). |
text | string | Texte affiché pour le lien d'accès rapide. |
📡 Événements
Aucun événement spécifique n'est émis par ce composant.
🧩 Slots
Aucun slot disponible pour ce composant.
📝 Exemples
Exemple de base
vue
<DsfrSkipLinks
:links="[
{ id: 'main-content', text: 'Aller au contenu principal' },
{ id: 'navigation', text: 'Aller au menu' },
{ id: 'footer', text: 'Aller au pied de page' }
]"
/>
Exemple complet
vue
<script lang="ts" setup>
import DsfrSkipLinks from '../DsfrSkipLinks.vue'
const links = [
{
id: 'why',
text: 'Allons à la question du pourquoi ?',
},
{
id: 'what',
text: 'Allons à la question du qu’est-ce ?',
},
]
const title = 'Qu’est-ce que le Lorem Ipsum ?'
</script>
<template>
<DsfrSkipLinks
:links="links"
/>
<section
id="what"
tabindex="0"
>
<h2>{{ title }}</h2>
<p>Le <strong>Lorem Ipsum</strong> est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte. Il n'a pas fait que survivre cinq siècles, mais s'est aussi adapté à la bureautique informatique, sans que son contenu n'en soit modifié. Il a été popularisé dans les années 1960 grâce à la vente de feuilles Letraset contenant des passages du Lorem Ipsum, et, plus récemment, par son inclusion dans des applications de mise en page de texte, comme Aldus PageMaker.</p>
<p>Le <strong>Lorem Ipsum</strong> est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte. Il n'a pas fait que survivre cinq siècles, mais s'est aussi adapté à la bureautique informatique, sans que son contenu n'en soit modifié. Il a été popularisé dans les années 1960 grâce à la vente de feuilles Letraset contenant des passages du Lorem Ipsum, et, plus récemment, par son inclusion dans des applications de mise en page de texte, comme Aldus PageMaker.</p>
<p>Le <a href="#">Lorem Ipsum</a> est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte. Il n'a pas fait que survivre cinq siècles, mais s'est aussi adapté à la bureautique informatique, sans que son contenu n'en soit modifié. Il a été popularisé dans les années 1960 grâce à la vente de feuilles Letraset contenant des passages du Lorem Ipsum, et, plus récemment, par son inclusion dans des applications de mise en page de texte, comme Aldus PageMaker.</p>
</section>
<section
id="why"
tabindex="0"
>
<h2>Pourquoi l'utiliser?</h2>
<p>On sait depuis longtemps que travailler avec du texte lisible et contenant du sens est source de distractions, et empêche de se concentrer sur la mise en page elle-même. L'avantage du Lorem Ipsum sur un texte générique comme 'Du texte. Du texte. Du texte.' est qu'il possède une distribution de lettres plus ou moins normale, et en tout cas comparable avec celle du français standard. De nombreuses suites logicielles de mise en page ou éditeurs de sites Web ont fait du Lorem Ipsum leur faux texte par défaut, et une recherche pour 'Lorem Ipsum' vous conduira vers de nombreux sites qui n'en sont encore qu'à leur phase de construction. Plusieurs versions sont apparues avec le temps, parfois par accident, souvent intentionnellement (histoire d'y rajouter de petits clins d'oeil, voire des phrases embarassantes).</p>
<p>Le <a href="#">Lorem Ipsum</a> est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un imprimeur anonyme assembla ensemble des morceaux de texte pour réaliser un livre spécimen de polices de texte. Il n'a pas fait que survivre cinq siècles, mais s'est aussi adapté à la bureautique informatique, sans que son contenu n'en soit modifié. Il a été popularisé dans les années 1960 grâce à la vente de feuilles Letraset contenant des passages du Lorem Ipsum, et, plus récemment, par son inclusion dans des applications de mise en page de texte, comme Aldus PageMaker.</p>
</section>
</template>
⚙️ Code source du composant
vue
<script lang="ts" setup>
import type { DsfrSkipLinksProps } from './DsfrSkipLinks.types'
export type { DsfrSkipLinksProps }
defineProps<DsfrSkipLinksProps>()
const scrollMeTo = (elementId: string) => {
const element = document.getElementById(elementId)
element?.focus()
}
</script>
<template>
<div class="fr-skiplinks">
<nav
class="fr-container"
role="navigation"
aria-label="Accès rapide"
>
<ul class="fr-skiplinks__list">
<li
v-for="link of links"
:key="link.id"
>
<a
class="fr-link"
:href="`#${link.id}`"
@click="scrollMeTo(link.id)"
>{{ link.text }}</a>
</li>
</ul>
</nav>
</div>
</template>
ts
export type DsfrSkipLinksProps = {
links: { id: string, text: string }[]
}