Texte✨ Premium

Text Explosion

Au clic, chaque lettre s'envole avec une transition élastique en ressort — un second clic les rassemble dans leur position initiale.

JSClickPhysics

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. Texte comprend 56 effets, dont 4 gratuits. Découvrir la catégorie →

3 exemples d'usage

Accroche typographique — Splash d'agence créative — Text Explosion exemple 1

① Accroche typographique — Splash d'agence créative

QuandSur la page d'accueil d'une agence créative ou d'un portfolio, quand un titre court en très grands caractères invite le visiteur à interagir pour découvrir le site.
PourquoiUn mot de 4–6 lettres à 5–7 rem disperse les chars sur toute la scène — chaque lettre trouve une destination unique sur l'ensemble de l'écran. La réassemblage crée un moment mémorable qui pousse à re-cliquer.
Réglagesfont-size 5–7rem sur .kt-text, letter-spacing .04em, mot court (4–6 caractères), scatter ±250 px.
Bouton d'action critique — Interface de jeu — Text Explosion exemple 2

② Bouton d'action critique — Interface de jeu

QuandSur une interface de jeu web (jeu en ligne, quiz, serious game), quand un label 'RETRY', 'LANCER' ou 'NOUVEAU JEU' doit signaler sans ambiguïté que l'action a bien été déclenchée.
PourquoiLe label explose au clic — feedback visuel immédiat — puis se rassemble automatiquement après 900 ms pour confirmer que l'action est prise en compte. La physique de ressort donne au bouton le caractère d'un déclencheur volontaire, pas d'un simple lien.
Réglagesfont-size 2.8–3.2rem, letter-spacing .08em, mot court (RETRY, GO, PLAY), couleur néon (#00ff9f), scatter ±120 px ; réassemblage automatique après 900 ms recommandé.
Titre explosif — Écran de démarrage ou game over — Text Explosion exemple 3

③ Titre explosif — Écran de démarrage ou game over

QuandSur un écran de titre ou une modale de fin de partie, pour signifier par le geste que l'utilisateur doit cliquer pour commencer ou rejouer.
PourquoiL'explosion des lettres est métaphoriquement cohérente avec l'univers ludique — la réassemblage par inertie crée l'envie de cliquer à nouveau. L'overshoot du ressort CSS renforce la dynamique.
Réglagesfont-size 5–8rem, letter-spacing -.02em, mot impactant (PLAY, BANG, NEXT), couleur néon (#00ff9f, #ff3c3c), scatter ±300 px.

Comment ça marche

Le conteneur .kt-text.kt-explosion regroupe des <span class="char"> — un par caractère. Chaque span hérite de display: inline-block via le CSS, ce qui autorise des transformations 2D indépendantes sans sortir du flux du texte. La fonction utilitaire splitChars(el) génère ces spans dynamiquement depuis le data-text ou le textContent du conteneur.

Au premier clic, le gestionnaire parcourt les .char et assigne à chacun un transform inline aléatoire : translate(x, y) rotate(angle) avec des valeurs indépendantes par lettre (typiquement ±150–300 px en x/y, ±360° en rotation). La classe .exploded est ajoutée simultanément sur le conteneur — elle sert de marqueur d'état et modifie la courbe de transition pour le retour.

La dispersion utilise cubic-bezier(.34, 1.56, .64, 1) sur .4s : une courbe à dépassement (overshoot) qui simule un ressort — chaque lettre dépasse brièvement sa destination avant de s'y stabiliser. La réassemblage (second clic) bascule sur cubic-bezier(.25, .46, .45, .94) en .8s : sans dépassement, plus lente, elle donne l'impression que les lettres convergent par inertie vers leur position d'origine.

Le CSS du fichier couvre également .kt-wave, .kt-elastic, .kt-scatter, .kt-liquid et .kt-whirlpool — chacun active un comportement différent via sa classe. L'utilitaire splitChars() défini dans le JS est partagé entre tous ces modes.

Accessibilité

  • prefers-reduced-motion : absent du CSS fourni — aucune alternative statique n'est prévue nativement. Recommandation avant déploiement : @media (prefers-reduced-motion: reduce) { .kt-explosion .char { transition: none } }.
  • Le texte reste du HTML natif (spans) lisible par les lecteurs d'écran — aucun canvas ne masque l'information. Ajouter aria-label sur le conteneur si le mot seul ne décrit pas suffisamment le contexte.
  • Aucun écouteur clavier câblé dans le JS fourni : l'interaction est souris uniquement. Pour l'accessibilité clavier, ajouter tabindex="0" sur le conteneur et un écouteur keydown (Entrée/Espace).
  • Contraste texte : les .char en #fff sur fond #0a0a0f atteignent un ratio ≈ 18:1 — bien au-delà de WCAG AA (4,5:1 pour le texte normal).
  • user-select: none sur .kt-text bloque la sélection du texte — si le contenu porte une information importante, prévoir un aria-label ou un équivalent textuel hors écran.

Compatibilité navigateur

Utilise CSS Transforms niveau 1 et transitions CSS — supportés depuis IE10+. Zéro dépendance externe.

Chrome 88+✓ Complet
Firefox 87+✓ Complet
Safari 14+✓ Complet
Edge 88+✓ Complet
Mobile iOS✓ Touch OK
Android Chrome✓ Complet

Sans JS, les <code>&lt;span class="char"&gt;</code> s'affichent en ligne et le texte reste lisible — aucune erreur fatale. La page reste fonctionnelle sans aucun effet de transformation.

Le code

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

index.html — structure
<div class="kt-text kt-explosion" data-text="VOTRE TEXTE" style="cursor: pointer;">
  <!-- Généré par splitChars() ou pré-splitter en markup -->
  <span class="char" data-char="V">V</span>
  <span class="char" data-char="O">O</span>
  <span class="char" data-char="T">T</span>
  <span class="char" data-char="R">R</span>
  <span class="char" data-char="E">E</span>
  <!-- Un &lt;span class="char"&gt; par caractère du texte -->
</div>
🔒 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
data-text BOOM Mot à afficher et découper en .char — modifiez l'attribut dans le markup pour changer le mot de l'effet sans toucher au JS.
font-size (CSS .kt-text) 2.2rem Taille des caractères. Montez à 5–8 rem pour un usage hero plein écran ; descendez à 1.5–2 rem pour un titre de section compact.
color (CSS .kt-text) #fff Couleur des caractères. Combinez avec background-clip: text; -webkit-text-fill-color: transparent sur .kt-text pour des lettres en dégradé.
letter-spacing (CSS .kt-text) .02em Espacement inter-lettres. Valeur positive pour un rendu aéré (hero) ; valeur négative (-.02em) pour un rendu condensé (game).
transition scatter (CSS .kt-explosion .char) .4s cubic-bezier(.34,1.56,.64,1) Durée et courbe de la dispersion. Raccourcissez à .2s pour une explosion plus sèche ; remplacez par ease-out pour supprimer le dépassement.
transition retour (CSS .kt-explosion.exploded .char) .8s cubic-bezier(.25,.46,.45,.94) Durée et courbe de la réassemblage. Allongez à 1.2–1.5s pour une convergence magnétique ultra-lente.
splitChars(el) Génère dynamiquement les <span class="char"> depuis data-text ou textContent. Utile pour du texte chargé côté serveur ou dans un CMS.
scatter radius (JS, ±px) ±150–300 px selon le contexte Amplitude de dispersion à définir dans votre gestionnaire de clic. Valeur typique : 40–50 % de la largeur du conteneur.

FAQ

Le code fourni expose uniquement splitChars(el) pour découper le texte en spans. La logique de clic (assigner un transform: translate(x,y) rotate(angle) aléatoire à chaque .char, basculer la classe .exploded) est à câbler dans votre propre script. C'est intentionnel : l'amplitude de dispersion dépend de la taille de votre conteneur.
Oui. Appelez splitChars() sur chaque conteneur puis attachez un écouteur de clic indépendant par élément. Les classes .kt-explosion et .kt-explosion.exploded sont scopées au sélecteur CSS — chaque conteneur gère son propre état sans interférence.
Oui. Les .char sont des spans display: inline-block ordinaires — ils héritent de color, de background-clip: text, de -webkit-text-fill-color: transparent et de tout style appliqué à .kt-text. Les transitions de transform ne réinitialisent aucune propriété de couleur.