Galerie d’images

Grille d’images avec visionneuse plein écran (lightbox). Navigation par flèches clavier, focus trap et préchargement des images adjacentes.

Exemple

<div class="bj-gallery" data-bj-gallery>
  <div class="bj-gallery__item">
    <img class="bj-gallery__img" src="…" alt="…" loading="lazy" />
    <span class="bj-gallery__caption">Légende</span>
  </div>
  …
</div>

Grille à 2 colonnes

Classe bj-gallery--cols-2.

<div class="bj-gallery bj-gallery--cols-2" data-bj-gallery>…</div>

Grille à 3 colonnes (défaut)

Sans modificateur : la grille suit la mise en page standard à trois colonnes.

<div class="bj-gallery" data-bj-gallery>…</div>

Grille à 4 colonnes

Classe bj-gallery--cols-4. Sur petit écran, la feuille de style repasse automatiquement à deux colonnes.

<div class="bj-gallery bj-gallery--cols-4" data-bj-gallery>…</div>

Classes CSS (grille et lightbox)

ClasseDescription
bj-galleryGrille 3 colonnes par défaut.
bj-gallery--cols-2Grille 2 colonnes.
bj-gallery--cols-4Grille 4 colonnes.
bj-gallery__itemConteneur image cliquable.
bj-gallery__imgImage avec ratio 4:3.
bj-gallery__captionLégende en superposition.
bj-lightboxOverlay plein écran ; affiché lorsque data-bj-expanded est présent.
data-bj-expandedÉtat ouvert de la visionneuse (posé par le script gallery).
bj-lightbox__contentColonne image + légende.
bj-lightbox__imgImage agrandie.
bj-lightbox__captionLégende sous l’image.
bj-lightbox__closeFermeture.
bj-lightbox__navPrécédent / suivant (bj-lightbox__nav--prev / --next).
bj-lightbox__counterCompteur « courant / total ».

Lightbox (marquage)

La visionneuse est créée automatiquement par le script. Elle affiche l’image agrandie avec navigation, compteur et légende. Utilisez data-bj-gallery-src sur l’image pour fournir une URL haute résolution différente de la miniature.

<!-- Injectée par le script à l’ouverture ; équivalent structurel -->
<div class="bj-lightbox" data-bj-expanded role="dialog" aria-label="Visionneuse">
  <span class="bj-lightbox__counter">1 / 4</span>
  <button type="button" class="bj-lightbox__close" aria-label="Fermer">…</button>
  <button type="button" class="bj-lightbox__nav bj-lightbox__nav--prev" aria-label="Précédent">…</button>
  <div class="bj-lightbox__content">
    <img class="bj-lightbox__img" src="…" alt="…" />
    <p class="bj-lightbox__caption">Légende</p>
  </div>
  <button type="button" class="bj-lightbox__nav bj-lightbox__nav--next" aria-label="Suivant">…</button>
</div>

Accessibilité

Chaque image a role="button" et tabindex="0" . La lightbox a role="dialog" avec focus trap. Navigation : flèches gauche/droite, Échap pour fermer. Les images doivent avoir un alt descriptif.