Navigation✨ Premium

Toast Error

Notification rouge auto-dismiss : showToast() injecte dynamiquement un toast dans #toastContainer, icône X SVG incluse, retrait automatique après 3 secondes.

JSAnimationAlert

Vous aurez accès à la démo interactive avec un compte gratuit.

Cet effet fait partie d'Effect.Labs — 811 effets vanilla, une partie gratuite, une partie premium. Navigation comprend 36 effets, dont 4 gratuits. Découvrir la catégorie →

3 exemples d'usage

Dashboard SaaS — Échec du chargement des données — Toast Error exemple 1

① Dashboard SaaS — Échec du chargement des données

QuandUn widget de statistiques fait une requête API qui expire ou retourne une 500, et l'interface doit en avertir l'utilisateur sans interrompre le reste du tableau de bord.
PourquoiLe toast s'affiche furtivement en haut à droite, signale l'erreur avec l'icône X rouge, puis disparaît seul — aucun clic requis, le dashboard reste utilisable.
RéglagesTimeout 4 000 ms pour laisser le temps de lire, message court (ex. « Impossible de charger les statistiques. Réessayez. »), conteneur positionné top:16px; right:16px.
Formulaire de paiement — Carte bancaire refusée — Toast Error exemple 2

② Formulaire de paiement — Carte bancaire refusée

QuandLa soumission retourne une erreur Stripe (fonds insuffisants, carte expirée) et l'utilisateur doit être notifié sans quitter le formulaire.
PourquoiLe toast rouge non-bloquant complète le marquage d'erreur sur le champ sans imposer de modale à fermer — l'utilisateur peut corriger immédiatement.
RéglagesTimeout 5 000 ms (message plus long), message « Paiement refusé. Vérifiez vos coordonnées bancaires. », conteneur ancré en haut de la page pour la visibilité maximale.
Gestionnaire de fichiers — Envoi échoué — Toast Error exemple 3

③ Gestionnaire de fichiers — Envoi échoué

QuandUn upload dépasse la taille maximale ou expire côté serveur, et l'interface doit indiquer l'échec sans interrompre la liste des autres fichiers.
PourquoiLa notification non-modale laisse voir quels fichiers ont réussi et lesquels ont échoué — pas de clic de fermeture requis, le flux de travail se poursuit.
RéglagesMessage « Envoi échoué : fichier trop volumineux (max 10 Mo). », timeout 5 000 ms, conteneur positionné bottom:16px; right:16px pour rester loin de la liste.

Comment ça marche

L'effet expose une fonction globale showToast(type, message). À l'appel, elle récupère document.getElementById('toastContainer') et y injecte un <div class="toast error"> créé dynamiquement — aucun élément HTML pré-existant n'est requis hormis ce conteneur, que vous positionnez librement dans votre mise en page.

L'icône SVG est construite en JavaScript selon le type passé en paramètre : un cercle barré de deux lignes croisées pour 'error' (icône X), un chemin en V pour 'success', un cercle exclamatif pour 'info'. Ces balises SVG sont inlinées dans innerHTML via un template literal, sans aucune dépendance externe.

Le dismissal automatique repose sur deux setTimeout imbriqués : à 3 000 ms, la classe hiding est ajoutée sur le toast (c'est là que vous définissez votre transition CSS opacity/transform) ; à 3 300 ms, element.remove() retire définitivement le nœud du DOM — propre, sans accumuler d'éléments orphelins.

La couleur rouge est portée par background: linear-gradient(135deg, #ef4444, #dc2626) sur .toast.error. Le positionnement fixe du conteneur, les styles de base du toast (padding, font, border-radius) et l'animation d'entrée ne sont pas inclus dans le code fourni — vous les définissez librement selon votre design system.

Accessibilité

  • prefers-reduced-motion absent : le code ne détecte pas cette préférence. Si votre CSS d'entrée utilise une animation de translation ou d'opacité, ajoutez @media (prefers-reduced-motion: reduce) { .toast { transition: none; animation: none; } } pour respecter WCAG 2.3.3.
  • Le conteneur #toastContainer doit porter role="region" et aria-live="assertive" pour que les lecteurs d'écran annoncent immédiatement le message d'erreur — ces attributs ne sont pas dans le code fourni et doivent être ajoutés à votre HTML.
  • Le bouton déclencheur est un <button> natif : focusable au clavier, activable à Entrée et Espace, correctement annoté par son texte visible.
  • Contraste : texte blanc (#ffffff) sur fond rouge foncé (#dc2626). Ratio ≥ 4,5:1 — conforme WCAG AA. La valeur claire (#ef4444) descend à ~3,9:1 : gardez le texte sur la zone sombre du dégradé ou épaississez la police.
  • Le toast est supprimé du DOM après 3 secondes : pour un message long, augmentez le timeout à 5 000–7 000 ms afin de respecter le critère de durée suffisante de WCAG 2.2.1.

Compatibilité navigateur

Utilise uniquement les APIs DOM de base (createElement, getElementById, setTimeout) — disponibles partout, aucune dépendance.

Chrome 88+✓ Complet
Firefox 87+✓ Complet
Safari 15+✓ Complet
Edge 88+✓ Complet
Mobile iOS✓ Complet
Android Chrome✓ Complet

Si <code>#toastContainer</code> est absent au moment de l'appel, <code>showToast()</code> retourne silencieusement — aucune erreur JS, la page reste intacte.

Le code

Structure HTML à coller dans votre page (CSS + JS disponibles avec un compte premium) :

index.html — structure
<div id="toastContainer"
     role="region"
     aria-live="assertive"
     aria-label="Notifications">
</div>

<button class="toast-trigger error"
        onclick="showToast('error', 'Message d\'erreur')">
  Afficher l'erreur
</button>
🔒 Débloquer le code complet — à partir de 2,99 € le 1er mois

HTML + CSS + JS complet, prêt à coller — avec des centaines d'effets premium.

Personnaliser

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

Option / propriétéDéfautEffet
3e3 (délai dismiss) 3000 ms Durée d'affichage avant l'ajout de .hiding. Changez à 5000 pour les messages longs. Premier setTimeout dans showToast().
300 (délai remove) 300 ms Délai entre .hiding et le retrait du DOM — doit correspondre à la durée de votre transition CSS. Deuxième setTimeout dans showToast().
.toast.error (CSS) linear-gradient(135deg, #ef4444, #dc2626) Couleur de fond du toast erreur. Remplacez les stops hex par votre palette brand.
#toastContainer (positionnement) non inclus Ajoutez dans votre CSS : position:fixed; top:16px; right:16px; z-index:9999; display:flex; flex-direction:column; gap:8px.
.toast (styles de base) non inclus Définissez : display:flex; align-items:center; gap:8px; padding:10px 14px; border-radius:10px; color:#fff; font-size:13px; font-weight:500; min-width:220px; box-shadow:0 4px 20px rgba(0,0,0,.35).
.hiding (animation sortie) non inclus Classe ajoutée à 3 s. Définissez : opacity:0; transform:translateY(-6px); transition:opacity .3s,transform .3s pour une sortie fluide.
'toastContainer' (id du conteneur) "toastContainer" ID codé en dur dans showToast(). Si votre conteneur a un autre id, modifiez la ligne getElementById('toastContainer') dans le JS.

FAQ

La fonction commence par document.getElementById('toastContainer') et retourne silencieusement si l'élément est absent du DOM. Vérifiez qu'un <div id="toastContainer"></div> est bien présent dans votre HTML avant que le script ne s'exécute.
La fonction est conçue pour ça : chaque appel crée un nouvel élément et l'ajoute au conteneur sans toucher aux précédents, chacun ayant son propre timer de 3 secondes. Ajoutez display:flex; flex-direction:column; gap:8px sur #toastContainer pour les empiler proprement.
Le premier setTimeout dans showToast() est réglé à 3e3 (3 000 ms). Changez cette valeur pour allonger ou raccourcir l'affichage. Pensez à ajuster en cohérence la durée de transition CSS sur .hiding et le deuxième timeout (300 ms) qui synchronise le retrait du DOM.