Texte✨ Premium

Scramble Text

Au survol, chaque lettre se brouille en glyphes aléatoires puis se révèle de gauche à droite — effet de déchiffrement cyberpunk, zéro dépendance.

CSSJSHover

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

Hero tech — Grand titre de marque en style terminal — Scramble Text exemple 1

① Hero tech — Grand titre de marque en style terminal

QuandSur une landing page à thème sombre ou cyberpunk, quand le visiteur arrive et survole le titre principal.
PourquoiÀ grande taille (3–5 rem), le brouillage est maximal : chaque frame est lisible, les glyphes remplissent toute la largeur du titre. L'effet de déchiffrement terminal colle naturellement à un positionnement tech, IA ou crypto sans aucun autre ornement.
RéglagesFont-size 4 rem, font-weight 800, letter-spacing 4px, pool réduit aux majuscules seules pour un rendu épuré — modifier la constante chars en 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
Composant UI — Items de navigation à déchiffrement — Scramble Text exemple 2

② Composant UI — Items de navigation à déchiffrement

QuandDans un sidebar sombre, un menu admin ou un dashboard technique, quand chaque item se brouille individuellement au survol.
PourquoiÀ taille réduite (1–1,5 rem), la résolution dure ~250–450 ms par item — suffisant pour être perçu, trop bref pour gêner la navigation. L'effet remplace avantageusement couleur et underline en apportant une dimension de profondeur sans surligner.
RéglagesFont-size 1.1 rem, letter-spacing 1px, vitesse accélérée : setInterval(…, 20) et iterations += 1/2 pour une résolution plus vive.
Bouton cyberpunk — Accès révélé au survol — Scramble Text exemple 3

③ Bouton cyberpunk — Accès révélé au survol

QuandSur une interface gaming, un site sombre ou un portail tech, quand le bouton principal invite à entrer, accéder ou déclencher une action critique.
PourquoiLe survol est l'action attendue sur un bouton : l'effet de déchiffrement transforme un simple hover en rituel d'accès. Sur un label court (6–8 caractères : « ACCESS », « ENTER », « DECRYPT »), la résolution complète prend ~480 ms à intervalle 20 ms et pas 1/2 — assez pour que l'utilisateur sente qu'il « gagne » quelque chose avant de cliquer.
RéglagesFont-size 1.1 rem, font-weight 700, letter-spacing 4px, pool réduit aux majuscules + symboles — modifier chars en 'ABCDEFGHIJKLMNOPQRSTUVWXYZ@#$%'. Intervalle setInterval(…, 20), pas iterations += 1/2 pour une révélation vive.

Comment ça marche

À l'événement mouseenter, un setInterval à 30 ms démarre sur l'élément cible. À chaque tick, le texte est reconstruit caractère par caractère : les positions dont l'indice est inférieur à iterations conservent leur lettre originale, les autres sont remplacées par un glyphe tiré aléatoirement dans le pool 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%&*'.

Le compteur iterations progresse de 1/3 à chaque tick : chaque position traverse environ 3 frames de brouillage avant d'être fixée, soit ~90 ms par lettre révélée. Sur un mot de 8 caractères comme « SCRAMBLE », la résolution complète prend ~720 ms — assez long pour être lisible, assez court pour rester percutant. Au mouseleave, l'intervalle est effacé et le texte original est restauré instantanément.

La CSS impose font-family: monospace et un letter-spacing: 2px fixe sur .text-scramble. Ces deux règles sont essentielles : en fonte monospace, chaque glyphe occupe exactement la même chasse — le bloc de texte ne tremble pas pendant la substitution aléatoire et aucun layout shift ne se produit à chaque frame.

Accessibilité

  • Pas de prefers-reduced-motion : le code ne teste pas cette media query — sur les systèmes configurés pour réduire le mouvement, l'animation de brouillage s'exécute normalement. À implémenter selon le contexte d'usage.
  • Keyboard inaccessible : l'effet est déclenché uniquement par mouseenter — aucun listener focus n'est défini. Les utilisateurs naviguant au clavier ne verront pas l'animation.
  • Pas d'aria-live sur l'élément : les mutations rapides du contenu textuel ne sont pas annoncées. Un lecteur d'écran lit le texte original au focus, non les glyphes intermédiaires.
  • Contraste du texte à l'état stable (blanc #ffffff sur fond sombre #0a0a0f) : ratio > 18:1, largement conforme WCAG AA et AAA.
  • L'élément <span> n'a pas de role ni d'aria-label explicite — il est traité comme du texte inline standard par les technologies d'assistance.

Compatibilité navigateur

Nécessite uniquement setInterval, mouseenter/mouseleave et la manipulation de textContent — supportés universellement depuis IE 9.

Chrome 60+✓ Complet
Firefox 55+✓ Complet
Safari 12+✓ Complet
Edge 79+✓ Complet
Mobile iOS✓ Touch uniquement
Android Chrome✓ Touch uniquement

Sans JS, le texte original reste affiché — aucune dépendance CSS critique, le contenu reste lisible et fonctionnel.

Le code

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

index.html — structure
<div class="demo-preview">
  <span class="demo-text text-scramble" id="scrambleTextHover">SCRAMBLE</span>
</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
chars (constante JS) 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%&*' Pool de glyphes aléatoires utilisés pendant le brouillage. Réduire aux majuscules seules pour un style épuré ; ajouter des caractères katakana ou des symboles Unicode pour un effet matrix.
setInterval(…, 30) (JS) 30 ms Fréquence de rafraîchissement. Réduire à 20 ms pour une animation plus fluide et rapide ; augmenter à 60 ms pour un brouillage lent et lisible.
iterations += 1/3 (JS) 1/3 Vitesse de révélation par tick. 1/2 → chaque lettre fixée en 2 frames (~40 ms/lettre à 20 ms). 1/6 → 6 frames de brouillage par lettre (~180 ms/lettre). Combiner avec l'intervalle pour contrôler précisément la durée totale.
.text-scramble { letter-spacing } (CSS) 2px Espacement entre les glyphes. Augmenter à 4–6 px sur les grands titres pour aérer ; 1 px sur les petits textes. Ne pas mettre 0 : les glyphes à chasse variable créent un tremblement.
.demo-text { font-size } (CSS) 2.5rem Taille du texte. Plus il est grand, plus l'effet est spectaculaire — recommandé ≥ 2 rem pour que le brouillage soit clairement perçu.
.demo-text { font-weight } (CSS) 800 Graisse du texte. Les graisses lourdes (700–900) rendent les glyphes aléatoires plus lisibles pendant le brouillage et accentuent l'impact visuel.
font-family: monospace (CSS sur .text-scramble) monospace Police à chasse fixe requise pour la stabilité visuelle. JetBrains Mono, Fira Code ou Courier New fonctionnent. Éviter les polices proportionnelles : la largeur de ligne changerait à chaque frame.

FAQ

Le code cible un seul élément via getElementById('scrambleTextHover'). Pour l'appliquer à plusieurs cibles, remplacez l'initialisation par une boucle querySelectorAll('.text-scramble') et attachez les listeners mouseenter/mouseleave à chaque nœud avec sa propre variable scrambleInterval — chaque instance est indépendante.
Les polices proportionnelles (Inter, Arial, Helvetica) attribuent des largeurs différentes à chaque glyphe : quand les caractères aléatoires remplacent les originaux, la largeur totale du mot change à chaque frame et le bloc de texte saute. La règle font-family: monospace sur .text-scramble garantit une chasse fixe et supprime ce tremblement.
Deux paramètres jouent en tandem : le délai du setInterval (fréquence des frames) et le pas iterations += 1/3 (nombre de frames avant de fixer une lettre). Pour un brouillage long mais fluide : intervalle 20 ms + pas 1/8 (~160 ms/lettre). Pour un déchiffrement instantané : intervalle 30 ms + pas 1 (30 ms/lettre, 1 seule frame de brouillage par position).