Confetti burst — confetti care sar din card la hover
Ce face
- Un card patrat cu logo si numele „notch”, in mijlocul ecranului. Cand mouse-ul intra peste card, din centrul lui sar 20 de bucati de confetti (doua poze rotunde, una inchisa si una deschisa).
- Fiecare bucata are marime, viteza si rotatie la intamplare: urca, se imprastie lateral, cade sub gravitatie si se stinge dupa ce a parcurs cam 1000px. La fiecare noua intrare a mouse-ului vine o noua explozie.
- Miscarea e calculata de mana, cadru cu cadru, pe
gsap.ticker(nu sunt tween-uri): viteza, gravitatia si rotatia se aduna la fiecare cadru, iargsap.setasaza fiecare bucata.
Ce cere site-ul
- GSAP 3.13.0 — deja global pe site. Nimic altceva: fara plugin-uri, fara Lenis.
- Fontul Bricolage Grotesque, din Google Fonts, cu
@importpe primul rand dincssCode. - Trei PNG-uri:
cfb-confetti-dark.pngsicfb-confetti-light.png(200×200, din 1000×1000),cfb-logo.png(400px lat). - Conversie rem → px (tema are baza rem de 10px):
2rem→ 32px,8rem→ 128px, titlulclamp(4rem, 8vw, 12rem)→clamp(64px, 8vw, 192px).
Cum e construit in Bricks
O sectiune, un element Code. Markup 0,4 KB, CSS 2 KB, JS 4 KB.
- Radacina e un
div.cfb(width: 100%); body-ul primestecfb-page, cu fundalul#e3e3db. Setari de pagina:headerDisabled,footerDisabled,disableLazyLoad. - Reglajele sunt in
CONFIG, sus in JS: cate bucati, marimea minima si maxima, viteza de pornire, cat de lat se imprastie, gravitatia si dupa cati pixeli incep sa se stinga. Pozele sunt in listaIMAGES. - Particulele se adauga direct in
body, ca in sursa, deci regula lor ebody.cfb-page .confetti-particle, nu sub.cfb. window.__cfbBurst()porneste o explozie din consola, pentru verificare.
Mici modificari fata de sursa
top: 0; left: 0pe particule, ca pozitia lor sa porneasca sigur din coltul ecranului: in sursa body-ul era gol, aici nu e.max-width: nonepe particule, ca tema sa nu le limiteze.gsap.ticker.wake()dupaticker.add.- Pozele, micsorate la marimea la care se vad.
Bug-uri lasate ca in sursa
- Pe telefon nu exista hover. Efectul porneste doar daca browserul trimite
mouseenterla atingere (de obicei da, dar nu e garantat). Reparatia: acelasitriggerBurstsi pepointerdown. - Ticker-ul ruleaza tot timpul, chiar cand nu e nicio particula. Consumul e mic, dar exista.
letter-spacing: -2%nu e valid, browserul il ignora.
Capcane
- Tabul ascuns nu misca nimic (cadrele sunt oprite). Verificarea s-a facut intr-o copie locala in Playwright: la hover apar 20 de particule, toate cu poza incarcata, si toate dispar dupa vreo 2,5 secunde; zero overflow la latime mare si la 390px.
Pasi de reproducere
- Micsoreaza si redenumeste pozele (prefix
cfb-), urca-le intr-un pachet base64 princreate-upload-link, cu md5 verificat. - Pune markup-ul intr-un
div.cfb, scopeaza CSS-ul sub.cfb, converteste rem in px; regula particulelor ramane pebody.cfb-page. - Aplatizeaza modulul intr-un IIFE (gsap e global), scoate reglajele in
CONFIGsi pozele inIMAGES. - Scrie arborele cu
wp_slash()si semnatura, verifica md5 la citire, regenereaza CSS-ul Bricks, goleste cache-ul. - Verifica explozia intr-o copie locala (tabul ascuns nu misca nimic).