Texte✨ Premium

Scramble Text

Le texte défile à travers des symboles aléatoires puis se fige lettre après lettre, de gauche à droite, comme un décodeur — au chargement, et de nouveau à chaque clic sur « Replay ».

JSDecoderMatrix

Mis à jour le

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

3 exemples d'usage

Page d'accueil sombre — Nom de code qui se déchiffre — Scramble Text exemple 1

① Page d'accueil sombre — Nom de code qui se déchiffre

QuandLe visiteur arrive sur une landing page à l'esthétique cyber ou terminal : le grand titre se déchiffre sous ses yeux dès l'ouverture de la page.
PourquoiL'effet de décodeur progressif crée une tension narrative — le nom reste mystérieux une fraction de seconde avant d'être révélé, parfait pour une marque tech ou un produit à forte identité.
RéglagesTexte en majuscules courtes (5–8 caractères), font-size 3–5 rem, durée 1 500–2 000 ms — le mot se révèle en entier à la fin de la durée.
Menu de navigation terminal — Liens qui scramblent au survol — Scramble Text exemple 2

② Menu de navigation terminal — Liens qui scramblent au survol

QuandDans une UI sombre (tableau de bord, outil pro, IDE en ligne), les liens de navigation se déchiffrent quand la souris les survole.
PourquoiLe scramble sur un mot court (HOME, DOCS, API) dure moins de 300 ms — assez pour percevoir l'animation sans gêner la navigation. Renforce l'identité « ligne de commande » sans ralentir l'UX.
RéglagesMot court (4–6 caractères), durée 400–600 ms ; branchez lien.addEventListener('mouseenter', () => scrambleText(lien, lien.textContent, 500)) sur chaque lien.
Interface de jeu — Nom de joueur ou code de mission révélé — Scramble Text exemple 3

③ Interface de jeu — Nom de joueur ou code de mission révélé

QuandDans un écran de debriefing ou de résultats (FPS, stratégie, quiz), le nom de code ou le callsign de l'équipe se décode sous les yeux du joueur.
PourquoiLa séquence de symboles aléatoires (0–9, @#$) évoque instantanément le jargon hacker et les films d'espionnage — porteur de sens dans un contexte jeu sans avoir besoin d'explication.
RéglagesTexte en majuscules (6–10 caractères), durée 2 500 ms pour un décodage plus lent et dramatique, lancé à l'affichage de l'écran de résultats.

Comment ça marche

scrambleText(element, texteFinal, durée) découpe l'animation en 20 étapes réparties sur la durée demandée (1 500 ms dans la démo, soit une étape toutes les 75 ms). À chaque étape, le texte entier est reconstruit : les positions déjà « décodées » affichent leur vraie lettre, les suivantes tirent un symbole au hasard parmi 44 (A–Z, 0–9, !@#$%^&*). Le résultat est posé d'un coup via textContent — aucune manipulation lettre par lettre du DOM, aucun HTML injecté.

La part décodée vaut Math.floor(étape / 20 × longueur) : la révélation avance strictement de gauche à droite, d'environ une lettre toutes les trois étapes pour un mot de six lettres. À la 20ᵉ étape, l'intervalle s'arrête et le texte final est posé.

L'effet se lance une première fois au chargement (dernière ligne du script). Le bouton Replay appelle replayScramble(), seule fonction exposée sur window — le reste du code est isolé dans une IIFE et ne pollue pas votre page. Chaque lancement commence par clearInterval : un clic en pleine animation la relance proprement au lieu d'empiler deux décodages.

L'élément porte la police "Courier New", monospace : chaque symbole a la même largeur, le mot ne « saute » pas pendant le brouillage. La couleur indigo #6366f1 renforce la connotation terminal.

Accessibilité

  • prefers-reduced-motion : absent du code — l'animation se joue même si le système demande des mouvements réduits. Ajoutez en tête de scrambleText : if (matchMedia('(prefers-reduced-motion: reduce)').matches) { element.textContent = finalText; return; }.
  • Le déclenchement passe par un vrai <button> : « Replay » s'active au clavier (Entrée, Espace) comme à la souris et au doigt.
  • Le texte est modifié 20 fois en 1,5 s. Ne placez pas l'élément dans une région aria-live, sinon chaque étape serait lue ; pour un titre important, ajoutez aria-label avec le texte final.
  • L'état final est toujours le texte exact : aucun symbole aléatoire ne peut rester affiché.
  • La police monospace garde une largeur de ligne stable pendant le brouillage : pas de décalage du contenu voisin.

Compatibilité navigateur

Nécessite setInterval, textContent et la syntaxe ES2015 (fonctions fléchées, const/let, paramètre par défaut) — tous les navigateurs actuels. Zéro dépendance externe.

Chrome 100+✓ Complet
Firefox 100+✓ Complet
Safari 15+✓ Complet
Edge 100+✓ Complet
Mobile iOS✓ Complet — lancement au chargement, Replay au toucher
Android Chrome✓ Complet

Sans JS, le mot reste affiché en clair, en monospace indigo — rendu cohérent, aucune erreur.

Le code

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

index.html — structure
<div class="demo-preview">
  <span class="demo-text splitting-text-scramble" id="scrambleText">VOTRE TEXTE</span>
  <!-- Optionnel : bouton Replay -->
  <button class="replay-btn" onclick="replayScramble()">Replay</button>
</div>
Débloquer le code complet — 9,90 € TTC/mois

Le code complet HTML + CSS + JS de Scramble Text, prêt à coller — et les 840 effets. Ou 299 € TTC une fois, accès à vie.

Personnaliser

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

Option / propriétéDéfautEffet
scrambleChars (JS, ligne 3) 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*' Les 44 symboles de brouillage. Réduisez à 'ABCDEF0123456789' pour un rendu hexadécimal, ou à '01' pour un effet binaire.
iterations (JS, ligne 7) 20 Nombre d'étapes du décodage. 10 = brouillage plus haché ; 40 = plus fluide (la durée totale ne change pas).
durée (JS, 3ᵉ argument, lignes 31 et 35) 1500 Durée totale en ms. 800 = décodeur vif ; 3000 = déchiffrement lent et dramatique.
texte (JS, 2ᵉ argument, lignes 31 et 35) 'DECODE' Le mot révélé. Mettez le même texte dans le <span> pour qu'il soit lisible sans JS.
color (.splitting-text-scramble) #6366f1 Couleur du texte brouillé et final. Remplacez par votre couleur de marque.
font-family (.splitting-text-scramble) "Courier New", monospace Une police monospace est indispensable pour éviter les sauts de largeur : 'JetBrains Mono', 'Fira Code'…

FAQ

Remplacez 'DECODE' aux lignes 31 et 35 (lancement et bouton Replay), et mettez le même texte dans le <span id="scrambleText"> pour qu'il reste lisible si le JS ne se charge pas.
Supprimez la ligne 35 (lancement au chargement) et ajoutez à sa place : var el = document.getElementById('scrambleText'); el.addEventListener('mouseenter', function () { scrambleText(el, 'DECODE', 1500); });. Le bouton Replay continue de fonctionner.
Le code partage un seul minuteur (splitScrambleInterval) : lancer un second élément arrête le premier. Pour des animations simultanées, rendez le minuteur propre à chaque élément — remplacez splitScrambleInterval par element._scramble aux lignes 11, 13 et 23.