Comment faire accessibilité et éco-conception @Démo publique

Fiche: Liste dynamique paginée

Le principe est assez simple

Structure

[ul] --> listeBloc
	[li] -- fondBloc + background image
		[span] --> titreBloc
[...]

Implémentation

Liste mise à jour, affichage de la page 1. 49 éléments au total, 12 affichés dans la page. Affichage de la page 2 sur 5.
  • Eco-conception
  • Environnement
  • Flore
  • Les bénéfices
  • Nature
  • Mobilité numérique
  • Prévoir
  • Partager
  • Construire
  • Attendre
  • Vision nocturne
  • Aventure motorisée
Pagination

Code

HTML

<div id="s01liste">
    <span role="alert" id="alerteListe" class="sr-only alerte cache">Liste mise à jour, affichage de la page 1.</span>
    <a id="hautListe01" tabindex="0" class="paslien">49 éléments au total,&nbsp;12&nbsp;affichés dans la page.&nbsp;Affichage de la page 2 sur 5.</a>
    <ul class="listeBloc">
        <li class="fondBloc" style="background-image:url('contenus/images/undraw_eco_conscious_re_r2bs.svg')"><span class="titreBloc">Eco-conception</span></li>
        <li class="fondBloc" style="background-image:url('contenus/images/undraw_environmental_study_re_q4q8.svg')"><span class="titreBloc">Environnement</span></li>
        <li class="fondBloc" style="background-image:url('contenus/images/undraw_flowers_vx06.svg')"><span class="titreBloc">Flore</span></li>
        <li class="fondBloc" style="background-image:url('contenus/images/undraw_nature_benefits_re_kk70.svg')"><span class="titreBloc">Les bénéfices</span></li>
        <li class="fondBloc" style="background-image:url('contenus/images/undraw_nature_m5llb.svg')"><span class="titreBloc">Nature</span></li>
        <li class="fondBloc" style="background-image:url('contenus/images/undraw_nature_on_screen_xkli.svg')"><span class="titreBloc">Mobilité numérique</span></li>
        <li class="fondBloc" style="background-image:url('contenus/images/undraw_into_the_night_vumi.svg')"><span class="titreBloc">Prévoir</span></li>
        <li class="fondBloc" style="background-image:url('contenus/images/undraw_nature_fun_re_gkjt.svg')"><span class="titreBloc">Partager</span></li>
        <li class="fondBloc" style="background-image:url('contenus/images/undraw_cabin_hkfr.svg')"><span class="titreBloc">Construire</span></li>
        <li class="fondBloc" style="background-image:url('contenus/images/undraw_thoughts_re_3ysu.svg')"><span class="titreBloc">Attendre</span></li>
        <li class="fondBloc" style="background-image:url('contenus/images/undraw_before_dawn_re_hp4m.svg')"><span class="titreBloc">Vision nocturne</span></li>
        <li class="fondBloc" style="background-image:url('contenus/images/undraw_trip_re_f724.svg')"><span class="titreBloc">Aventure motorisée</span></li>
    </ul>
    <span class="sr-only">Pagination</span>
    <div class="pagination">
        <ul>
            <li class="page"><span class="sr-only">page </span>1<span class="sr-only"> (page actuelle)</span></li>
            <li class="page"><a href="javascript:page(2,'s01liste')"><span class="sr-only">page </span>2</a></li>
            <li class="page"><a href="javascript:page(3,'s01liste')"><span class="sr-only">page </span>3</a></li>
            <li class="page"><a href="javascript:page(4,'s01liste')"><span class="sr-only">page </span>4</a></li>
            <li class="page"><a href="javascript:page(5,'s01liste')"><span class="sr-only">page </span>5</a></li>
        </ul>
    </div>
</div>

Le script

function charge(fichier,ou) {
    var demande = new XMLHttpRequest();
    demande.open('GET', fichier, true);
    demande.onload = function() {
        if (demande.status >= 200 && demande.status < 400) {
            var contenu = demande.responseText;
            document.querySelector(ou).innerHTML = contenu;
        }
        else document.querySelector(ou).innerHTML = "échec du chargement du contenu..."; 
    };
    demande.send();
}

ou est le nom du container affichant la liste et fichier est la ressource à afficher.

L'alerte ARIA

<span role="alert" id="alerteListe" class="sr-only alerte cache">Liste mise à jour, affichage de la page 2.</span>

Le focus

Le code est placé en haut de la page chargée.

Un simple placement de focus au chargement de la liste

<script>
   document.onload = function() {
      document.querySelector("#hautListe01").focus();
   };
script>