Galerie✨ Premium

Product Zoom

Galerie produit : les miniatures changent la grande photo au survol, au clic, à la tape ou au clavier, et la grande photo zoome deux fois sous le pointeur.

JSE-commerce

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

Coloris d'un canapé — survoler une teinte, puis la trame — Product Zoom exemple 1

① Coloris d'un canapé — survoler une teinte, puis la trame

QuandSur la fiche du canapé Ondelin chez Maison Calvérine, quatre miniatures sous la photo montrent terracotta, vert sauge, bleu nuit et lin. Le visiteur survole une teinte, la grande photo change et le nom du coloris suit ; il passe ensuite sur la photo pour voir la trame du tissu.
PourquoiChoisir un coloris puis vérifier la matière se fait dans le même cadre, sans ouvrir de visionneuse : c'est le geste attendu sur une fiche de mobilier.
Réglages--pdz-width: 310px, --pdz-ratio: 7/4, --pdz-thumb: 73px, --pdz-thumb-ratio: 4/3, --pdz-accent: #2b2420, --pdz-zoom: 2.2. La scène affiche le nom du coloris en lisant aria-pressed.
Ordonnances à préparer dans le logiciel d'une pharmacie — cliquer, puis lire la posologie — Product Zoom exemple 2

② Ordonnances à préparer dans le logiciel d'une pharmacie — cliquer, puis lire la posologie

QuandDans Frelandine, la commande n° 2207 à retirer demain liste trois ordonnances ; le panneau de droite les montre en miniature. Le pharmacien clique une ordonnance (la ligne correspondante s'allume), puis survole la grande vue pour lire le dosage et la durée de chaque médicament.
PourquoiUne ordonnance se vérifie ligne par ligne, en petits caractères : la galerie tient dans un panneau latéral étroit à côté de la liste, et le zoom évite d'ouvrir chaque scan dans un nouvel onglet.
Réglages--pdz-width: 196px, --pdz-ratio: 24/25, --pdz-thumb: 58px, --pdz-zoom: 2.4, --pdz-accent: #5b5bd6. Dans la capture, la scène clique les miniatures tour à tour.
Plans T2, T3, T4 d'un programme immobilier — Product Zoom exemple 3

③ Plans T2, T3, T4 d'un programme immobilier

QuandSur le site des Hautes Brémondes, le plan occupe la gauche et trois miniatures étiquetées T2, T3 et T4 sont empilées à droite, au-dessus du bouton « Être rappelé ». Survoler une typologie affiche son plan ; survoler le plan agrandit les surfaces de chaque pièce.
PourquoiLe visiteur compare des logements : passer d'un plan à l'autre au survol est rapide, et lire « Chambre 2 — 10,4 m² » demande le zoom.
RéglagesGalerie en ligne (.pdz-gallery{flex-direction: row}, miniatures en colonne), --pdz-ratio: 7/5, --pdz-thumb: 112px, --pdz-accent: #1d8a6f, --pdz-zoom: 2 ; étiquette ajoutée dans chaque bouton.

Comment ça marche

La grande photo .pdz-frame et les miniatures .pdz-thumb sont de vraies balises : un <img> pour la grande, un <button> contenant un <img> pour chaque miniature. Choisir une miniature (survol à la souris, clic, tape ou focus clavier) copie son image dans la grande photo, ou le fichier de son data-zoom-src s'il existe, avec son texte alternatif. La miniature choisie passe à aria-pressed="true" et la grande photo fait une petite impulsion à 110 % pendant 0,3 s.

Le zoom : quand la souris ou le doigt est sur la grande photo, la classe is-zoomed l'agrandit à --pdz-zoom (2) et le point visé devient l'origine du zoom, comme une loupe qui suivrait le pointeur. En sortant, la photo revient entière.

Toutes les recherches partent de la racine .fx-0185-root : deux galeries sur une page ont chacune leur grande photo et ne se pilotent pas, et le script peut être collé deux fois.

Accessibilité

  • Miniatures : de vrais boutons, atteints au Tab, nommés par le texte alternatif de leur image, avec aria-pressed pour dire laquelle est affichée. Le focus suffit à changer la photo.
  • Zoom au clavier : la grande photo se prend au Tab et s'agrandit au centre ; les flèches déplacent la zone de 5 % (20 % avec Maj), Échap rend la photo entière.
  • Toucher : une tape sur une miniature change la photo ; poser et glisser le doigt sur la grande photo zoome et parcourt, lever le doigt rend la photo entière (touch-action: none sur la grande photo seulement). Une simple tape ne laisse pas la photo agrandie.
  • Mouvement réduit : sous prefers-reduced-motion: reduce, ni impulsion ni glissement ; le zoom est appliqué d'un coup.

Compatibilité navigateur

Boutons HTML, Pointer Events, transformations CSS, aspect-ratio et 3 Ko de JavaScript, sans dépendance. Mesuré dans Chromium 151, Firefox 153 et WebKit 26.5 : deux galeries indépendantes (survoler la 2e ne touche plus la 1re), script collé deux fois sans erreur, miniatures au Tab, tape et glisser réels à 390 px (Chromium).

Chrome 88+✓ Complet (mesuré)
Firefox 89+✓ Complet (mesuré)
Safari 15+✓ Complet (moteur WebKit mesuré)
Edge 88+✓ Complet (moteur Chromium)
Mobile iOS 15+✓ Complet (moteur WebKit mesuré)
Android Chrome 88+✓ Complet (moteur Chromium)

Sans JavaScript, la grande photo et les miniatures s'affichent, sans changement ni zoom. Dans Safari, Tab n'atteint les boutons que si l'option « Tab pour sélectionner chaque élément » est active.

Le code

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

index.html — structure
<div class="fx-0185-root">
  <div class="pdz-gallery">
    <div class="pdz-frame" tabindex="0" role="group" aria-label="Photo du produit : survolez-la, glissez le doigt ou utilisez les flèches pour zoomer">
      <img class="pdz-image" src="vue-1-grande.jpg" alt="Vue de face">
      <span class="pdz-label" aria-hidden="true">Product View</span>
    </div>
    <div class="pdz-thumbs" role="group" aria-label="Variantes du produit">
      <button type="button" class="pdz-thumb" aria-pressed="true"><img src="vue-1.jpg" data-zoom-src="vue-1-grande.jpg" alt="Vue de face"></button>
      <button type="button" class="pdz-thumb" aria-pressed="false"><img src="vue-2.jpg" data-zoom-src="vue-2-grande.jpg" alt="Vue de dos"></button>
      <!-- autant de miniatures que voulu -->
    </div>
  </div>
</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
Images (HTML — miniatures et grande photo) 4 motifs de couleur (SVG intégrés) Une miniature = un <button class="pdz-thumb"> avec son <img>. data-zoom-src sur l'image d'une miniature donne la version grande affichée et zoomée. Mettez la même image dans .pdz-image au départ.
--pdz-zoom 2 Agrandissement de la grande photo sous le pointeur.
--pdz-width · --pdz-ratio · --pdz-radius 280px · 7 / 4 · 0.75rem Largeur maximale, proportions et arrondi de la grande photo (et de la galerie).
--pdz-thumb · --pdz-thumb-ratio 60px · 4 / 3 Taille et forme des miniatures.
--pdz-accent #6366f1 Bordure de la miniature choisie ou survolée.
Légende .pdz-label « Product View » Texte centré sur la grande photo, masqué pendant le zoom ; à retirer sur de vraies photos.

FAQ

Sur la grande photo : survolez-la (ou posez le doigt, ou donnez-lui le focus) et elle s'agrandit deux fois autour du point visé. Les miniatures, elles, choisissent la photo.
Oui : data-zoom-src sur l'image d'une miniature. La miniature reste légère et la grande photo charge le fichier large au moment du choix.
Oui : retirez l'écouteur pointerenter du script. Le clic, la tape et le clavier continuent de fonctionner.