Galerie✨ Premium

Lightbox with Thumbnails

Grande image et, juste dessous, la bande de toutes les miniatures : on saute directement à la photo voulue, ou on avance avec ‹ ›, ← → et le doigt.

JSThumbnailsStrip

Mis à jour le

Cet effet fait partie d'Effect.Labs — 840 effets vanilla, une partie gratuite, une partie premium. Galerie comprend 44 effets, dont 6 gratuits. Découvrir la catégorie →

3 exemples d'usage

Pièces d'un gîte de montagne, avec la bande des photos sous la grande vue — Lightbox with Thumbnails exemple 1

① Pièces d'un gîte de montagne, avec la bande des photos sous la grande vue

QuandSur la fiche du gîte de Talvèze, le vacancier ouvre la photo du séjour, puis touche directement la miniature de la chambre dans la bande.
PourquoiPour un logement, on veut aller droit à la pièce qui compte (la chambre, la terrasse) sans tout faire défiler ; la bande montre aussi combien de photos il reste.
RéglagesGalerie en mosaïque (une grande vue sur deux rangées, deux petites), quatrième photo masquée dans la mosaïque mais présente dans la bande. --tlb-backdrop: rgba(18, 26, 16, 0.94). Capture : ouverture puis clic sur la troisième miniature de la bande.
Choix d'un modèle de faire-part à l'étape 2 d'une commande — Lightbox with Thumbnails exemple 2

② Choix d'un modèle de faire-part à l'étape 2 d'une commande

QuandChez la papeterie Pomeranche, le client ouvre « Nuit étoilée » et passe d'un modèle à l'autre avec › pour comparer, la bande lui montrant où il en est.
PourquoiComparer quatre visuels imprimés demande de les voir grands et l'un après l'autre ; la bande garde les quatre choix sous les yeux pendant ce temps.
RéglagesGrille de deux colonnes dans la zone de commande, récapitulatif (format, quantité, prix) à côté, --tlb-accent rose.
Versions V1 à V4 d'une maquette soumises au client d'un studio — Lightbox with Thumbnails exemple 3

③ Versions V1 à V4 d'une maquette soumises au client d'un studio

QuandDans l'espace client du Studio Cardolune, le client ouvre la V3, puis compare avec la V4 à la flèche droite avant de laisser son commentaire.
PourquoiValider une maquette, c'est passer vite d'une version à l'autre au même endroit de l'écran ; le clavier et la bande rendent la comparaison immédiate.
RéglagesGrille de quatre colonnes avec numéro et nom de version sous chaque vignette ; vignettes cerclées de gris (box-shadow ajoutée par la scène). Capture : keydown ArrowRight envoyé au dialog.

Comment ça marche

Vous n'écrivez la galerie qu'une fois. Au chargement, le script parcourt les boutons .tlb-thumb et fabrique dans .tlb-strip un bouton miniature pour chacun, avec la même image et le même alt. La bande suit donc toujours la galerie, quel que soit le nombre de photos.

La miniature de l'image affichée est mise en avant (opacité pleine, bordure blanche, agrandie de 10 %) et porte aria-current="true" ; les autres restent à demi transparentes. Quand la bande est plus large que 80 % de l'écran, elle défile horizontalement et recentre la miniature active à chaque changement.

Le reste vient de la visionneuse à flèches : ‹ › en boucle, touches ← →, glissement horizontal de plus de 50 px sur la grande image, Échap / ✕ / clic sur le fond pour fermer. La grande image est limitée à 80 % de la largeur et à la hauteur de l'écran moins 110 px, pour laisser la bande visible même en paysage sur téléphone.

Accessibilité

  • Deux façons de choisir : les miniatures de la bande sont des boutons nommés par l'alt de leur photo, regroupés dans un role="group" « Miniatures » ; la miniature active est signalée par aria-current.
  • Clavier : Tab parcourt ✕, ‹, ›, puis chaque miniature ; ← → changent d'image depuis n'importe quel bouton de la visionneuse ; Échap ferme.
  • Dialog : showModal(), nom « Visionneuse d'images », page derrière inerte, focus rendu à la vignette d'origine à la fermeture.
  • Mouvement réduit : ouverture sans fondu ni zoom, miniatures sans transition ; la navigation et le balayage restent disponibles.

Compatibilité navigateur

Socle commun aux visionneuses du site (<dialog> modal : Firefox 98, Safari 15.4 ; aspect-ratio : Chrome 88). justify-content: safe center évite qu'une bande trop longue soit coupée à gauche ; là où safe n'est pas compris, la déclaration précédente center s'applique. Essais dans Chromium 151, Firefox 153 et WebKit 26.5 : bande construite dans chaque copie, clic sur la 4e miniature, toucher à 390 px.

Chrome 88+✓ Complet (mesuré)
Firefox 98+✓ Complet (mesuré)
Safari 15.4+✓ Complet (mesuré sur WebKit)
Edge 88+✓ Complet (moteur Chromium)
Mobile iOS 15.4+✓ Complet (non mesuré sur appareil)
Android Chrome 88+✓ Complet (toucher mesuré)

Sans JavaScript, la bande reste vide et rien ne s'ouvre : seule la galerie est visible.

Le code

Structure HTML à coller dans votre page (le CSS + JS sont inclus avec votre achat) :

index.html — structure
<div class="fx-0175-root">
  <div class="tlb-grid">
    <button type="button" class="tlb-thumb" aria-haspopup="dialog"><img src="photo.jpg" alt="Dégradé violet vers cyan" width="600" height="400"></button>
    <button type="button" class="tlb-thumb" aria-haspopup="dialog"><img src="photo.jpg" alt="Dégradé cyan vers émeraude" width="600" height="400"></button>
    <button type="button" class="tlb-thumb" aria-haspopup="dialog"><img src="photo.jpg" alt="Dégradé fuchsia vers rose" width="600" height="400"></button>
    <button type="button" class="tlb-thumb" aria-haspopup="dialog"><img src="photo.jpg" alt="Dégradé rose vers violet" width="600" height="400"></button>
  </div>
  <dialog class="tlb-viewer" aria-label="Visionneuse d'images">
    <div class="tlb-content">
      <button type="button" class="tlb-close" aria-label="Fermer"><svg>…</svg></button>
      <button type="button" class="tlb-nav tlb-prev" aria-label="Image précédente"><svg>…</svg></button>
      <img class="tlb-image" alt="">
      <button type="button" class="tlb-nav tlb-next" aria-label="Image suivante"><svg>…</svg></button>
      <div class="tlb-strip" role="group" aria-label="Miniatures"></div>
    </div>
  </dialog>
</div>

Paiement unique, sans abonnement — le code est à toi pour toujours

Personnaliser

Options passées à l'API ou attributs data-* :

Option / propriétéDéfautEffet
Vignettes de la galerie (CSS — --tlb-thumb) 120px Largeur des boutons de la page (format 3:2).
Miniatures de la bande (CSS — .tlb-strip-btn) 60 × 40 px Taille fixe dans le CSS ; agrandissez-la et réduisez d'autant la marge de 110 px laissée sous la grande image.
Hauteur de la grande image (CSS — max-height de .tlb-image) calc(80vh - 110px) La place restante est celle de la bande ; à ajuster si vous changez la taille des miniatures.
Voile (CSS — --tlb-backdrop) rgba(0, 0, 0, 0.9) Fond de la visionneuse.
Arrondis (CSS — --tlb-radius, --tlb-radius-lg) 0.5rem, 1rem Vignettes de la page ; grande image et fond de la bande.
Grande version (HTML — data-full) absent La grande vue charge cette adresse ; la bande garde la vignette légère.
Seuil du balayage (JS — 50) 50 px Glissement horizontal nécessaire sur la grande image pour changer de photo.

FAQ

Non, laissez <div class="tlb-strip"> vide : le script la remplit à partir de la galerie. Il ne voit que les photos présentes à son lancement : pour une galerie construite plus tard, insérez toute la racine puis relancez le script (les racines déjà câblées sont ignorées).
La bande devient défilante (barre fine) et se recentre à chaque changement sur la miniature active ; la grande image ne bouge pas de place.
Oui, c'est ce que fait la scène du gîte : masquez le bouton en CSS (display: none), il reste compté, présent dans la bande et accessible par les flèches.