La idea
En cada “tick” de un temporizador, reconstruimos el texto: las letras que ya “llegaron” se muestran bien, y las que faltan muestran un símbolo al azar. Con cada tick avanza una letra más, hasta que todo queda revelado.
texto = letras.map((ch, i) =>
i < avance ? ch : glifoAzar()
).join('');
El JavaScript completo
Un setInterval corre cada 40ms (el slider) y va subiendo avance. Cuando pasa el largo de la palabra, paramos.
const glifos = '!<>-_/[]{}=+*?#';
let f = 0;
const timer = setInterval(() => {
h.textContent = [...final].map((ch, i) =>
i < f / 3 ? ch : glifos[Math.random() * glifos.length | 0]
).join('');
if (f / 3 > final.length) { clearInterval(timer); h.textContent = final; }
f++;
}, 40);
Los dos detalles clave
- El
f / 3hace que cada letra tarde 3 ticks en fijarse — así el efecto dura más y se aprecia. - El
clearIntervales obligatorio: si no paras el temporizador, sigue corriendo para siempre y gasta recursos.
Listo 🔓
Este efecto queda genial en títulos, contadores o al revelar un email. Sube la velocidad para un look más frenético.