Ovaj JavaScript kod stvara efekat gdje tekst unutar elementa s klasom card-subtitle postupno dolazi do izražaja, jedan po jedan, pri prelasku mišem (hover efekat).
Evo što svaki dio koda radi:
1. const subtitle = document.getElementsByClassName("card-subtitle")[0];
- Ova linija traži prvi element na stranici s klasom
card-subtitlei sprema ga u varijablusubtitle. Ovo pretpostavlja da postoji barem jedan takav element.
2. const createWord = (text, index) => { ... }
- Ova funkcija,
createWord, prima dva argumenta:text(tekst koji predstavlja jednu riječ).index(pozicija te riječi u rečenici).
- U funkciji se:
- Stvara novi
spanelement. - U taj
spanse postavlja sadržaj, tj. riječ iztextargumenta, a dodaje se i razmak nakon svake riječi (ovo je zato što se dodaje razmak nakon svakogspanelementa). - Dodaje se klasa
card-subtitle-wordna tajspan, vjerojatno za stilizaciju kroz CSS. - Postavlja se CSS svojstvo
transitionDelaykoje stvara efekt vremenskog kašnjenja u animaciji, temeljen naindexargumentu. Svaka riječ će se pojaviti sa zakašnjenjem odindex * 40ms.
- Stvara novi
- Na kraju funkcija vraća kreirani
spanelement.
3. const addWord = (text, index) => subtitle.appendChild(createWord(text, index));
- Funkcija
addWordpoziva funkcijucreateWordza svaku riječ, a zatim dodaje rezultat (novispan) kao dijete elementasubtitle. - Na taj način se svaka riječ dodaje u
card-subtitleelement, jednu po jednu, s vremenskim kašnjenjem.
4. const createSubtitle = text => text.split(" ").map(addWord);
- Ova funkcija
createSubtitleprima cijeli tekst (string) kao argument i:- Dijeli tekst na pojedine riječi pomoću
split(" "). - Zatim poziva
addWordfunkciju za svaku riječ pomoćumapmetode, koja iterira kroz sve riječi u tekstu.
- Dijeli tekst na pojedine riječi pomoću
5. createSubtitle("Na prelazak mišem kartica će promijeniti boju gradijalno.");
- Ova linija poziva funkciju
createSubtitles rečenicom: “Na prelazak mišem kartica će promijeniti boju gradijalno.” - Svaka riječ iz ove rečenice bit će dodana kao
spanelement unutarsubtitleelementa, a animacija će biti postavljena tako da svaka riječ dođe sa zakašnjenjem od 40ms * index.
Zaključak:
Ovaj kod omogućuje efekt gdje svaka riječ u tekstu unutar elementa s klasom card-subtitle postupno postaje vidljiva uz animaciju kašnjenja, stvarajući efekt pojavljivanja riječi jednu po jednu pri hoveru nad karticom.