Même avec un seul élément, le script fonctionne.
Mais si vraiment tu n'en as qu'UN SEUL, autant utiliser un id (au lieu de classe) :
<p id="animate-text">Quaerebatur Tyrii textrini prolatae quidam scriptae purpurae tuniculam Graeco est Maras nihil fucandae autem etiam.</p>
1 2 3 4 5
| #animate-text {
visibility:hidden;/*on masque*/
font-family:"courier",sans-serif;
color:black;
} |
le JS se "réduit" à (j'ai ajouté des commentaires) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| /* ------------------------- */
/* JavaScript pur */
/* ------------------------- */
"use strict";
window.addEventListener("DOMContentLoaded", (event) => {
// Démarrage AUTO
animate_text();
});
// -------------------
function animate_text()
{
let delay = 100, // délai (en millisecondes) entre chaque affichage de caractère
delay_start = 0,
contents,
letters;
let elem = document.querySelector("#animate-text"); // UNIQUE
contents = elem.textContent.trim(); // récupère le contenu (texte à traiter)
elem.textContent = ""; // on vide le contenu
letters = contents.split(""); // on sépare chaque caractère (lettre/ponctuation/espace)
elem.style.visibility = 'visible'; // on rend visible le conteneur
letters.forEach(function (letter, index_1) { // pour chaque caractère
setTimeout(function () {
// ---------
// effet machine à écrire (SIMPLE)
elem.textContent += letter; // affiche le caractère
// ---------
}, delay_start + delay * index_1); // index_1 vaut 0 à (letters.length-1)
});
} |
On peut aussi démarrer l'écriture AU CLICK sur un bouton, ou tout autre évènement :
<button type="button" id="ecrire-text">Ecrire...</button>
1 2 3 4 5 6 7 8 9 10 11 12
| window.addEventListener("DOMContentLoaded", (event) => {
// Démarrage AUTO
/*
animate_text();
*/
// OU : ECRIRE AU CLICK SUR UN BOUTON
let btn_write = document.querySelector("#ecrire-text"); // button
btn_write.addEventListener("click", (event) => {
animate_text();
btn_write.style.display = 'none'; // on masque le bouton (pour ne pas re-cliquer dessus)
});
}); |
Partager