Cum să calculați și să animați valorile cadrelor cheie folosind JavaScript
Atunci când construiți aplicații web dinamice, combinarea JavaScript cu animațiile CSS poate crea tranziții fluide și atractive din punct de vedere vizual. O provocare comună este animarea elementelor pe baza valorilor datelor în timp real. Un exemplu excelent este crearea de animații de cadre cheie care reflectă procentul actual al unei bare de progres folosind SVG și stroke-dashoffset.
Această tehnică poate fi deosebit de utilă atunci când afișați valori dinamice, cum ar fi un număr de abonați, ca în acest exemplu în care numărul de abonamente se actualizează în timp real. Pentru ca animația să funcționeze fără probleme, putem converti acest număr într-un procent și îl putem aplica direct în animația CSS.
Cu toate acestea, JavaScript poate fi confuz atunci când se ocupă de animații CSS, mai ales când se calculează valori precum procente pentru a manipula cadrele cheie în mod eficient. În acest caz, înțelegerea modului de extragere și manipulare a datelor dinamice cu JavaScript este crucială pentru a vă asigura că animațiile reflectă valoarea corectă.
Acest articol vă va ghida prin utilizarea JavaScript pentru a elimina datele numerice, a calcula procente și a le aplica cadrelor cheie folosind proprietatea stroke-dashoffset. Până la sfârșit, veți avea o înțelegere clară a modului în care JavaScript și CSS pot lucra împreună pentru a crea animații receptive.
Comanda | Exemplu de utilizare |
---|---|
fetch() | Metoda fetch() este utilizată pentru a solicita date de la o resursă (de exemplu, fișier text, API). În acest script, este folosit pentru a prelua datele abonaților dintr-un fișier text pentru procesare în bara de progres. |
parseInt() | Funcția parseInt() convertește un șir într-un număr întreg. Aici, elimină valoarea de dinaintea barei oblice (de exemplu, 42/50) pentru a obține numărul curent de abonați. |
split() | Metoda split() împarte un șir într-o matrice bazată pe un delimitator. În acest caz, folosește „/” pentru a separa numărul curent de abonați de obiectiv (42 de 42/50). |
strokeDashoffset | strokeDashoffset este un atribut SVG care controlează modul în care este desenat o contur. Este manipulat aici pentru a schimba dinamic umplerea cercului SVG pe baza procentului de abonament. |
setTimeout() | Această metodă apelează o funcție după o întârziere specificată. Este folosit aici pentru a seta intervalul de rotire a etichetelor, permițând noilor etichete să apară după câteva secunde. |
cloneNode() | cloneNode(true) este folosit pentru a crea o copie a unui nod, inclusiv copiii acestuia. Acest lucru este esențial pentru duplicarea șablonului de etichetă și adăugarea lui în DOM în mod dinamic. |
visibility | Această proprietate CSS este controlată prin JavaScript pentru a ascunde sau afișa etichetele. Acesta asigură faptul că doar o etichetă este vizibilă la un moment dat în timpul rotației. |
strokeDasharray | strokeDasharray definește modelul de liniuțe și goluri într-o contur SVG. Este setată la o anumită valoare (450) pentru a se potrivi cu circumferința cercului, care este animată cu strokeDashoffset. |
Animarea cercurilor SVG cu JavaScript: un ghid pas cu pas
În acest exemplu, am creat o animație dinamică pentru un cerc SVG folosind o combinație de JavaScript și CSS. Scopul principal este de a anima progresul unui cerc pentru a reprezenta vizual un număr de abonamente în timp real. Cercul folosește Proprietatea CSS, care controlează cât de mult este vizibilă cursa cercului. JavaScript este folosit pentru a prelua și calcula procentul de progres și apoi pentru a aplica acea valoare la contur, permițând o animație lină bazată pe date în timp real.
O componentă cheie este funcția, care preia date de pe un fișier sau server, în acest caz, numărul de abonamente. Scriptul extrage partea numerică a datelor utilizând metode de manipulare a șirurilor, cum ar fi , și convertește rezultatul într-un număr utilizabil cu . Împărțind numărul de abonamente curent la obiectiv, calculăm progresul ca o zecimală (procent). Acest procent este apoi aplicat la stroke-dashoffset pentru a crea efectul vizual.
Al doilea script se ocupă de rotația etichetelor, ceea ce adaugă un strat de conținut dinamic pe afișaj. Etichetele sunt adăugate la DOM folosind metoda, care dublează un șablon de etichetă existent. Fiecare etichetă este rotită la un interval stabilit, care este controlat de funcţie. Această metodă declanșează rotația după o întârziere specificată, creând o tranziție lină între etichete fără a necesita interacțiunea utilizatorului.
Combinația de pentru cerc și scriptul de rotație a etichetei creează o interfață cu utilizatorul captivantă. Prin modificarea dinamică atât a progresului cercului, cât și a etichetelor afișate, oferim utilizatorilor o indicație vizuală a progresului în timp real. Modularitatea codului asigură, de asemenea, că aceste caracteristici pot fi adaptate cu ușurință la alte aplicații bazate pe date, făcându-l o soluție flexibilă pentru dezvoltatorii care doresc să implementeze elemente dinamice de UI.
Animarea barelor de progres SVG cu cadre cheie JavaScript și CSS
Această soluție folosește JavaScript vanilla și SVG pentru animația front-end dinamică a barei de progres. Scriptul extrage valori, calculează procente și le aplică la un stroke-dashoffset al unui element SVG pentru o animație lină.
// HTML and SVG structure
<div id="labels"></div>
<svg width="200" height="200">
<circle id="circle" cx="100" cy="100" r="90" />
</svg>
// JavaScript to animate stroke-dashoffset
let labels = document.getElementById("labels");
const SubGoal = 50; // Total subscription goal
function updateProgress(data) {
const SubCount = parseInt(data.split('/')[0]); // Extract number
const SubPercent = SubCount / SubGoal; // Calculate percentage
const SubPercentStroke = 450 - 450 * SubPercent; // Set stroke offset
document.getElementById('circle').style.strokeDashoffset = SubPercentStroke;
}
// Example usage
fetch('subscribers.txt').then(response => response.text())
.then(data => updateProgress(data));
Rotație dinamică a etichetelor cu JavaScript
Această soluție rotește dinamic diferite etichete la intervale stabilite folosind JavaScript. Acceptă atât afișajele statice, cât și cele rotative pe baza setărilor utilizatorului.
// Label rotation logic
var displaySettings = "RotatingDisplays";
var displayRotationSeconds = 2;
var displayRotationIndex = 0;
function rotateLabelDisplay() {
if (displayRotationIndex >= labels.children.length) {
displayRotationIndex = 0;
}
for (const label of labels.children) {
label.style.visibility = 'hidden';
}
let label = labels.children[displayRotationIndex];
label.style.visibility = 'visible';
displayRotationIndex++;
setTimeout(rotateLabelDisplay, displayRotationSeconds * 1000);
}
// Trigger rotation if display setting is enabled
if (displaySettings === "RotatingDisplays") {
rotateLabelDisplay();
} else {
labels.children[0].style.visibility = "visible";
}
Îmbunătățirea animațiilor cu variabile JavaScript și CSS
Un aspect important al utilizării pentru a controla animațiile este capacitatea sa de a interacționa cu . Aceste variabile permit dezvoltatorilor să creeze cod mai reutilizabil și ușor de întreținut. De exemplu, în loc să codificați valorile animației precum stroke-dashoffset direct în JavaScript, le puteți defini ca variabile CSS și le puteți manipula folosind JavaScript. Aceasta oferă o modalitate mai curată de a vă gestiona proprietățile animației și face codul mai modular și mai scalabil.
O altă caracteristică puternică atunci când combinați JavaScript cu CSS este utilizarea ascultătorilor de evenimente. Animațiile bazate pe evenimente se pot declanșa pe baza interacțiunilor utilizatorului, cum ar fi făcând clic pe un buton sau derulând în jos o pagină. În exemplul nostru, puteți îmbunătăți animația adăugând interactivitate. De exemplu, stroke-dashoffset poate fi recalculat și aplicat dinamic ori de câte ori un utilizator se abonează sau efectuează o altă acțiune. Acest lucru creează o experiență extrem de captivantă și interactivă, care răspunde la datele în timp real.
În plus, combinarea cu cadre cheie este o altă modalitate de a crea animații fluide și eficiente. Această metodă asigură că animațiile sunt realizate în timpul ciclului optim de vopsire al browserului, oferind performanțe mai bune în comparație cu setInterval sau setTimeout tradițional. Această tehnică este utilă în special atunci când aveți de-a face cu animații frecvente sau procese JavaScript grele care altfel ar putea încetini interfața cu utilizatorul.
- Cum face afectează animațiile SVG?
- The controlează cât de mult este vizibilă cursa traseului SVG. Schimbarea valorii permite animații netede asemănătoare progresului.
- Care este rolul în animații în timp real?
- este folosit pentru a prelua date dintr-un API sau un fișier. În animații, acest lucru ajută la încărcarea valorilor dinamice, cum ar fi numărul de abonați, care pot fi apoi animate pe ecran.
- Can să fie folosit pentru a controla intervalele de animație?
- Da, poate fi folosit pentru a introduce întârzieri în animații, cum ar fi rotirea etichetelor la intervale.
- Care este scopul în scripturi de animație JavaScript?
- convertește un șir (cum ar fi „42/50”) într-un număr întreg, care este necesar pentru calcularea procentelor în animațiile dinamice.
- De ce ar trebui să folosesc în loc de ?
- este optimizat pentru animații, asigurând tranziții mai fine prin sincronizarea acestora cu ciclul de revopsire al browserului.
Combinând cu CSS permite animații puternice și dinamice care pot răspunde la date în timp real. Înțelegând cum să calculați valori precum procentele și să le aplicați animațiilor de cadre cheie, puteți crea interfețe de utilizator captivante și receptive, care reflectă progresul live sau actualizările datelor.
Cu tehnicile prezentate în acest ghid, puteți manipula cu ușurință proprietăți precum pentru animații SVG și rotește elementele în mod dinamic. Această combinație oferă o soluție scalabilă pentru dezvoltatorii care doresc să integreze animații dinamice în proiectele lor cu intrări de date în timp real.
- Informații detaliate despre utilizare pentru animațiile SVG pot fi găsite la MDN Web Docs: stroke-dashoffset .
- Pentru mai multe informații despre animațiile dinamice ale cadrelor cheie folosind JavaScript și CSS, consultați Smashing Magazine: animații CSS cu cadre cheie .
- Îndrumări suplimentare despre manipularea DOM-ului cu în JavaScript este disponibil la MDN Web Docs: cloneNode .
- Aflați mai multe despre utilizare pentru a prelua date în timp real de la MDN Web Docs: Utilizarea Fetch .