--- author: Nicolas Arduin download: true exportFilename: intriduction-accessibilite-numerique lineNumbers: true remoteAssets: true htmlAttrs: dir: ltr lang: fr theme: ./ # some information about your slides (markdown enabled) title: Introduction à l'accessibilité numérique info: | ## Commencer avec l'accessibilité Pourquoi, pour qui et comment ? Learn more at [Sli.dev](https://sli.dev) # https://sli.dev/features/drawing drawings: persist: false # slide transition: https://sli.dev/guide/animations.html#slide-transitions transition: fade-out # enable MDC Syntax: https://sli.dev/features/mdc mdc: true # make slide text selectable selectable: true # take snapshot for each slide in the overview overviewSnapshots: true hideInToc: true layout: intro --- # L'accessibilité numérique en 10 étapes
Nico, Décembre 2024.
licence : CC BY-SA
--- hideInToc: true layout: bullets --- # Sommaire --- layout: content --- # Contexte > “ La force du Web réside dans son universalité. L'accès de tous, quel que soit le handicap, en est un aspect essentiel. ” Tim Berners-Lee, Directeur du W3C et inventeur du World Wide Web
> “ L’accessibilité numérique est un droit fondamental. C’est la possibilité pour toutes et tous d’utiliser les outils informatiques, quelle que soit leur façon d’y accéder. ” Access 42
> The W3C vision is that the Web and related technologies are accessible so that all people with disabilities around the globe can participate equally in the digital world. W3C WAI
--- layout: content --- # Législation **Obligation actuelle :** - les personnes morales de droit public - les personnes morales délégataires d’une mission de service public - les entreprises privées dont le chiffre d’affaires est supérieur à 250 millions d’euros
**À partir de Juin 2025 :** > Les entreprises employant moins de dix personnes qui fournissent des services et dont le chiffre d'affaires annuel n'excède pas deux millions d'euros. [article L412-13 du Code de la consommation](https://www.legifrance.gouv.fr/codes/id/LEGISCTA000047284903) (applicable au 28 juin 2025) > Tous les sites et plateformes de commerce électronique doivent être accessibles pour les nouveaux services à partir de 2025 et pour l’existant à partir de 2030. Plus de détails dans [cet article d'Access 42](https://access42.net/transposition-directive-europeenne-ue-2019-882-accessibilite-produits-services/)
--- layout: fact hideInToc: true --- # 30 % de la population française rencontre des difficultés au quotidien [Rapport 2024 de la DREES.](https://drees.solidarites-sante.gouv.fr/sites/default/files/2024-12/HANDICAP24MAJ061224-2.pdf)
**La majorité des handicaps sont invisibles.** --- layout: bullets hideInToc: true --- ## L'accessibilité numérique englobe tous les handicaps qui affectent l'accès au Web, notamment : - auditifs - cognitifs - neurologiques - physiques - psychologiques - oraux - visuels --- layout: auto-grid columns: 2 rows: 250px --- # Exemples de technologies d'assistance ::content:: --- layout: content --- # ​1. Éléments HTML sémantiques ````md magic-move {lines: false} ```html

Titre de la page

Titre de la section

Contenu de la page

``` ```html

Titre de la page

Titre de la section

Contenu de la page

Pied de page

``` ```` --- layout: auto-grid columns: 2 --- # ​2. Structure des titres ::content:: ```md {all|2|3|4|none}{lines: false} Erroné └── h1 Titre principal ├── h2 Titre secondaire ├── h4 Titre niveau 4 // [!code error] │ └── h5 Titre niveau 5 ├── h2 Titre secondaire │ ├── h2 Titre secondaire │ ├── h3 Titre tertiaire │ │ ├── h4 Titre niveau 4 │ │ │ └── h6 Titre niveau 6 │ └── h3 Titre tertiaire └── h1 Titre principal ``` ```md {none|all}{lines: false} Correct └── h1 Titre principal ├── h2 Titre secondaire ├── h2 Titre secondaire │ └── h3 Titre tertiaire ├── h2 Titre secondaire │ ├── h3 Titre tertiaire │ ├── h3 Titre tertiaire │ │ ├── h4 Titre niveau 4 │ │ │ └── h5 Titre niveau 5 │ └── h3 Titre tertiaire └── h2 Titre secondaire ``` ::after:: Add-on HeadingsMap : [firefox](https://addons.mozilla.org/fr/firefox/addon/headingsmap/), [chrome](https://chromewebstore.google.com/detail/headingsmap/gdaioanblnkeegccagdlnolobgjhfhhm) --- layout: title-image image: ours.jpg --- # ​3. Formulaires - Associez **toujours** un `label` aux champs `input`, `select`, `textarea`, `meter`, `progress` - Indiquez clairement les champs obligatoires - Ne désactivez pas le bouton d'envoi ```html{2,3} // [!code word:name]
```
Si le `label` doit être masqué, utilisez une classe CSS `visually-hidden` (ou `sr-only`). ```css .visually-hidden { position: absolute; overflow: hidden; block-size: 1px; inline-size: 1px; clip: rect(0 0 0 0); clip-path: inset(100%); white-space: nowrap; } ```
--- layout: content ---
Facilitez le remplissage des champs avec des instructions claires, des exemples et des messages d'erreur.
Proposez du remplissage automatique et des claviers adaptés si besoin. ```html{2-3,5-6}
``` [Qu'est-il arrivé au champ texte ? Vidéo en anglais.](https://briefs.video/videos/what-happened-to-text-inputs/)
--- layout: content --- # ​4. Polices et typographie - unités - utilisez des [unités relatives](https://whatunit.com/) (ex. `em`, `rem`, `lh`, `ex`) pour permettre aux utilisateurs de modifier la taille des polices - ou des fonctions de calcul CSS (ex. `clamp()`, `calc()`) - taille des polices - minimum `16px` (équivalent) pour le corps de texte - créez une [échelle typographique fluide](https://utopia.fyi/type/calculator?c=320,18,1.2,1240,20,1.25,5,2,&s=0.75%7C0.5%7C0.25,1.5%7C2%7C3%7C4%7C6,s-l&g=s,l,xl,12) - alignement du texte - ne **JAMAIS** justifier le texte - limitez les textes centrés - évitez les sauts de ligne forcés `
` - `text-wrap: balance;` sur les titres - familles - préférez des polices travaillées pour leur lisibilité (ex. [Atkinson Hyperlegible](https://brailleinstitute.org/freefont), [Luciole](https://luciole-vision.com/)) - ou conservez le choix utilisateur `font-family: system-ui, FALLBACK;` --- layout: title-image image: fleur.jpg --- # ​5. Vérifiez les contrastes Sujet complexe car l'algorithme du WCAG repose uniquement sur des calculs et pas sur des tests visuels de perception. - [Calculateur WCAG](https://coolors.co/contrast-checker) officiellement intégré dans le standard d'accessibilité - [Calculateur APC](https://www.myndex.com/BPCA/) plus précis mais expérimental et non intégré à un quelconque standard. --- layout: title-image image: pierre.jpeg --- # ​6. Simplifiez l'interface, privilégiez le contenu - ne cachez pas le contenu ([carousel much?](https://shouldiuseacarousel.com/), [tabs much?](https://www.youtube.com/live/XntrwuBjE5c?feature=shared&t=1582)) - n'animez pas (trop) le contenu `@media (prefers-reduced-motion: no-preference) { go crazy 🤪 }` - ne gênez pas le contenu - soulignez les liens, ne soulignez rien d'autre - ne supprimez pas le focus - n'utilisez pas uniquement la couleur pour indiquer un état - faites des phrases courtes et [faciles à comprendre](https://www.culture.gouv.fr/Thematiques/developpement-culturel/Culture-et-handicap/Facile-a-lire-et-a-comprendre-FALC-une-methode-utile) --- layout: title-image image: marmotte.jpg --- # ​7. Chouchoutez les images et vidéos ## images - ajoutez systématiquement l'attribut `alt` - `alt=""` si l'image est décorative - `alt="[DESCRIPTION]"` si l'image est porteuse d'information - renseignez si possible les attributs `width` et `height` pour éviter le "layout shift" - [redimensionnez, optimisez et convertissez](https://squoosh.app/) dans des formats récents (ex. `webp`, `avif`) ## vidéos - ne lancez pas la lecture automatiquement - [redimensionnez, optimisez et convertissez](https://handbrake.fr/) dans des formats récents (ex. `h265`, `av1`) --- layout: title-image image: tigre.avif image-align: right --- # ​8. Éléments obligatoires - ajoutez systématiquement les attributs : `` - signalez les changements de langue dans le contenu avec `lang` - renseignez un `title` pour chaque page - n'utilisez pas une balise pour faire de la mise en forme (ex. `h3` à la place d'un `h2` pour le rendre plus petit). **Astuce :** créez une classe correspondant à chaque niveau de titre afin de garder la hiérarchie intacte. ```css /* [!code word:.h2] */ h2, .h2 { font-size: 4rem; font-weight: bold; } /* [!code word:.h3] */ h3, .h3 { font-size: 3rem; font-weight: 300; } ``` --- layout: title-image image: surricate.jpg --- # ​9. Trucs en plus - Designez pour `320px` de large au minimum - Ajoutez au moins un [lien d'évitement](https://accessibilite.numerique.gouv.fr/methode/glossaire/#liens-d-evitement-ou-d-acces-rapide) - Ne changez pas [l'ordre de tabulation](https://accessibilite.numerique.gouv.fr/methode/glossaire/#ordre-de-tabulation) de la page - Capturez le focus dans les fenêtre modale/menu - Proposez au moins deux systèmes de navigation (menu, plan du site, moteur de recherche) - [N'abusez pas d'ARIA](https://briefs.video/videos/what-is-aria-even-for/) > Les pages d'accueil avec de l'ARIA affichent en moyenne 34,2 % d'erreurs (détectées) en plus que celles sans ARIA. > [source](https://webaim.org/projects/million/#:~:text=Home%20pages%20with%20ARIA%20present%20averaged%2034.2%25%20more%20detected%20errors%20than%20those%20without%20ARIA) --- layout: title-image image: field.jpg ratio: 1fr 1fr --- # ​10. (in)Formez-vous ## Formations - [Access42](https://formations.access42.net/formations/) - [Practical Accessibility](https://practical-accessibility.today/) ## Ressources - [Référentiel général d’amélioration de l’accessibilité (RGAA)](https://accessibilite.numerique.gouv.fr/) - [Blog Access42](https://access42.net/blog/) - [Webbed Briefs](https://briefs.video/) (vidéo, anglais) - [Adrian Rosseli](https://adrianroselli.com/) (blog, anglais) ## Conférences - [Paris Web](https://www.paris-web.fr/) - [a11y Paris](https://www.a11yparis.org/) - [CSS Day](https://cssday.nl) --- layout: quote --- ::quote:: # Rien n'est accessible à tout le monde. Par conséquent, tout ce que vous ajoutez à votre interface ne peut que la rendre moins accessible. La simplicité (sobriété) est le seule remède. ::default:: Heydon Pickering [The Folly of Chasing Demographics](https://www.youtube.com/watch?v=XntrwuBjE5c) --- src: ./pages/eco.md hide: false ---