Galerie✨ Premium

Auto-play Slider

Diaporama qui avance seul : une barre se remplit, la diapositive suivante glisse, et tout s'arrête dès que la souris ou le clavier s'y pose.

JSTimerProgress

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

Offres de la semaine en tête d'une boutique de vélos — Auto-play Slider exemple 1

① Offres de la semaine en tête d'une boutique de vélos

QuandSous le menu de la boutique Rouvelle, une bannière de 136 px de haut sur toute la largeur fait défiler trois offres : un gravel à −15 %, une révision d'atelier, des casques de ville. Chaque diapositive est une image avec un titre et un bouton. Les catégories (route, gravel, ville, enfant) suivent juste dessous.
PourquoiTrois messages commerciaux tiennent dans la place d'un seul, sans que le visiteur ait à cliquer. La barre de progression lui montre qu'il reste du temps avant le changement, et la pause au survol l'empêche de perdre l'offre qu'il était en train de lire.
Réglages--apl-max-width: none et hauteur imposée par la scène (--apl-ratio: auto, conteneur de 136 px), racine transparente. Trois <img> (illustrations SVG) + texte par diapositive, libellés « 1 sur 3 »… data-apl-interval="1300" accéléré pour que la capture de 2 s montre un changement ; 5000 à 6000 ms conviennent mieux en vrai. Dans la capture, la souris passe sur la bannière : la barre s'y arrête.
Étapes d'une recette en mode cuisine — Auto-play Slider exemple 2

② Étapes d'une recette en mode cuisine

QuandDans l'appli Mitonelle, la recette d'une tarte aux poireaux affiche les ingrédients cochés à gauche et, à droite, une grande carte blanche par étape : « Étape 2 sur 5 » puis la consigne en gros caractères. Les étapes avancent seules pendant qu'on a les mains occupées ; le bouton pause et les flèches orange permettent de rester sur une étape ou de revenir en arrière.
PourquoiIci, le carrousel sert de guide pas à pas plutôt que de vitrine : le texte est l'élément principal, la barre de progression indique le temps de lecture restant, et la pause est un vrai besoin (une étape prend plus longtemps que prévu).
RéglagesFormat par défaut 16/10 sur toute la largeur de la colonne (--apl-max-width: none), diapositives sur fond blanc (CSS de la scène), flèches regroupées en bas à droite et teintées orange par la scène. data-apl-interval="1000" (le minimum, pour la capture) ; comptez plutôt 15 à 30 s par étape en usage réel.
Engagements qui tournent sous le bouton Payer — Auto-play Slider exemple 3

③ Engagements qui tournent sous le bouton Payer

QuandSur la page panier de Tissavelle (linge de maison), sous le total et le bouton « Payer 163 € », un petit encart de 182 × 86 px fait tourner trois engagements : paiement sécurisé, retour gratuit sous 30 jours, expédition sous 48 h. Chacun tient en une icône et une ligne.
PourquoiAu moment de payer, ces rappels rassurent sans pousser le bouton vers le bas : trois messages occupent la place d'un seul. Utilisé en petit détail, l'effet ne vole pas l'attention au bouton principal.
Réglages--apl-ratio: 182/86, fond vert très clair, flèches de 22 px et bouton pause de 22 px placés en bas (CSS de la scène), barre de progression verte de 3 px. data-apl-interval="1200" pour la capture. Le bouton pause reste visible : une lecture automatique doit toujours pouvoir être arrêtée.

Comment ça marche

La racine .fx-0163-root contient un .apl-carousel (région nommée), une fenêtre .apl-viewport et une piste .apl-track en display:flex : chaque .apl-slide occupe 100 % de la largeur, et la piste glisse de translateX(-100 %) par diapositive en 0,5 s. Une <img> posée dans une diapositive la couvre entièrement (object-fit: cover) ; sans image, les cinq dégradés indigo → ambre de la démo s'appliquent.

Le script cherche chaque .fx-0163-root de la page et lui donne sa propre minuterie : deux carrousels sur une page vivent chacun leur vie. Une boucle requestAnimationFrame remplit la barre .apl-progress au temps réellement écoulé (pas d'au plus 50 ms par image, donc pas de saut au retour d'un onglet caché) ; quand elle atteint 100 %, la diapositive suivante arrive et la barre repart de zéro. Durée : data-apl-interval, 3000 ms par défaut, 1000 ms au minimum.

La lecture s'interrompt tant que la souris survole le carrousel, tant que le focus clavier est à l'intérieur, et quand le carrousel sort de l'écran (la boucle est alors arrêtée, pas seulement masquée). Le bouton rond en haut à droite met en pause ou relance ; demander la lecture avec ce bouton passe avant la pause de survol. Les flèches ‹ › et un glisser horizontal de plus de 50 px (doigt ou souris) changent de diapositive et remettent la barre à zéro.

Accessibilité

  • Rôles de carrousel : role="region" + aria-roledescription="carrousel" et un nom sur le conteneur ; chaque diapositive est un role="group" annoncé « diapositive, 2 sur 5 ». Ces textes sont dans le HTML : traduisez-les et mettez à jour « X sur N » si vous changez le nombre de diapositives.
  • Pause : bouton nommé « Mettre en pause la lecture automatique » / « Reprendre la lecture automatique » selon l'état, plus arrêt au survol, au focus clavier et hors écran. Les diapositives cachées sont inert : un lien qu'elles contiennent ne reçoit pas le focus.
  • Annonces : la piste est en aria-live="off" pendant la lecture (rien n'est lu toutes les 3 s) et passe en polite une fois en pause, pour que la diapositive choisie aux flèches soit annoncée.
  • Mouvement réduit : sous prefers-reduced-motion: reduce, le carrousel démarre en pause et les changements se font sans glissement ; les flèches, le glisser et le bouton de lecture restent actifs.
  • Toucher : Pointer Events avec touch-action: pan-y sur la fenêtre : un geste horizontal change de diapositive, un geste vertical fait défiler la page normalement.

Compatibilité navigateur

JavaScript sans dépendance (requestAnimationFrame, Pointer Events, IntersectionObserver) et attribut inert (Chrome 102, Firefox 112, Safari 15.5 d'après MDN). Mesuré dans Chromium 151, Firefox 153 et WebKit 26.5 (Playwright) : deux copies dont la 2e pilotée seule, lecture qui avance sans survol et s'arrête au survol, mouvement réduit, 390 px sans défilement horizontal, glisser au doigt (Chromium) sans bloquer le défilement vertical, 0 erreur.

Chrome 102+✓ Complet (mesuré)
Firefox 112+✓ Complet (mesuré)
Safari 15.5+✓ Complet (mesuré dans WebKit)
Edge 102+✓ Complet (moteur Chromium)
Mobile iOS 15.5+✓ Moteur WebKit, non vérifié sur appareil
Android Chrome 102+✓ Complet (toucher mesuré)

Sans JavaScript, la première diapositive reste affichée, les boutons ne font rien. Avant Safari 15.5 / Firefox 112, inert est ignoré : tout fonctionne, mais un lien d'une diapositive cachée peut recevoir le focus.

Le code

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

index.html — structure
<div class="fx-0163-root" data-apl-interval="3000">
  <div class="apl-carousel" role="region" aria-roledescription="carrousel" aria-label="…">
    <div class="apl-viewport">
      <div class="apl-track" aria-live="off">
        <div class="apl-slide" role="group" aria-roledescription="diapositive" aria-label="1 sur 5"><img src="…" alt="…"></div>
        …
      </div>
    </div>
    <div class="apl-progress" aria-hidden="true"></div>
    <button class="apl-toggle" type="button" aria-label="…" data-apl-label-pause="…" data-apl-label-play="…"><svg class="apl-icon-pause">…</svg><svg class="apl-icon-play">…</svg></button>
    <button class="apl-arrow apl-prev" type="button" aria-label="…">…</button>
    <button class="apl-arrow apl-next" type="button" aria-label="…">…</button>
  </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
Durée d'une diapositive (HTML — data-apl-interval sur .fx-0163-root) 3000 (ms) Temps de remplissage de la barre avant le passage à la suivante. Minimum 1000 ms. Pour du texte à lire, visez 5000 ms ou plus.
Largeur maximale (CSS — --apl-max-width) 640px Le carrousel prend la largeur de son conteneur jusqu'à cette limite. none pour occuper toute la largeur.
Proportions (CSS — --apl-ratio) 16 / 10 Rapport largeur/hauteur. auto si vous imposez une hauteur au carrousel.
Contenu des diapositives (HTML — .apl-slide) 5 dégradés « Slide 1 » à « Slide 5 » Mettez-y une <img> (elle couvre toute la diapositive) et/ou du texte. Ajoutez ou retirez des diapositives librement, en mettant à jour leurs aria-label « X sur N ».
Libellés du bouton pause (HTML — data-apl-label-pause / data-apl-label-play) « Mettre en pause la lecture automatique » / « Reprendre la lecture automatique » Nom lu par les lecteurs d'écran selon l'état ; à traduire avec les autres libellés.
Vitesse du glissement (CSS — .apl-track) transform .5s cubic-bezier(.25,.46,.45,.94) Durée et courbe de la transition entre deux diapositives.
Couleur de la barre (CSS — .apl-progress) dégradé #6366f1 → #d946ef, 4 px Fond et hauteur de la barre de progression posée en bas du carrousel.

FAQ

Il bouge dès que la souris quitte le cadre. S'il reste immobile, vérifiez que le focus clavier n'est pas resté sur une flèche (Tab ailleurs pour le libérer), que le bouton n'est pas sur « lecture », et que le système n'est pas réglé en « réduire les animations » : dans ce cas il démarre volontairement en pause.
Oui. Seule la diapositive affichée est accessible au clavier, les autres sont inert. Quand un visiteur tabule jusqu'au lien, la lecture se met en pause pour qu'il ait le temps de l'activer.
Le carrousel démarre en lecture, sauf en mouvement réduit. Pour un démarrage en pause, cliquez le bouton par script au chargement, mais seulement si le carrousel n'est pas déjà en pause (classe apl-paused sur .apl-carousel) : sinon ce clic lancerait la lecture chez les personnes en mouvement réduit. Par exemple var r = document.querySelector('.fx-0163-root'); if (!r.querySelector('.apl-paused')) r.querySelector('.apl-toggle').click();. Les flèches et le glisser continuent de fonctionner.