Dünaamilistel väärtustel põhinevate võtmekaadrite animeerimine JavaScriptiga

Stroke-dashoffset

Kuidas arvutada ja animeerida võtmekaadri väärtusi JavaScripti abil

Dünaamiliste veebirakenduste loomisel võib JavaScripti kombineerimine CSS-animatsioonidega luua sujuvaid ja visuaalselt meeldivaid üleminekuid. Üks levinud väljakutse on reaalajas andmeväärtustel põhinevate elementide animeerimine. Suurepärane näide on võtmekaadri animatsioonide loomine, mis kajastavad edenemisriba praegust protsenti, kasutades SVG-d ja joone-dashoffset.

See tehnika võib olla eriti kasulik dünaamiliste väärtuste (nt tellijate arvu) kuvamisel, nagu selles näites, kus tellimuste arv värskendatakse reaalajas. Animatsiooni sujuvaks toimimiseks saame selle arvu teisendada protsendiks ja rakendada selle otse CSS-animatsioonile.

Kuid JavaScript võib CSS-animatsioonidega tegelemisel segadust tekitada, eriti kui arvutate võtmekaadrite tõhusaks manipuleerimiseks väärtusi, näiteks protsenti. Sel juhul on oluline mõista, kuidas JavaScripti abil dünaamilisi andmeid ekstraheerida ja nendega manipuleerida, et tagada teie animatsioonide õige väärtus.

See artikkel juhendab teid, kuidas kasutada JavaScripti numbriliste andmete eemaldamiseks, protsentide arvutamiseks ja nende rakendamiseks võtmekaadritele, kasutades atribuuti insult-dashoffset. Lõpuks saate selgelt aru, kuidas JavaScript ja CSS saavad reageerivate animatsioonide loomiseks koos töötada.

Käsk Kasutusnäide
fetch() Ressursist (nt tekstifailist, API-st) andmete küsimiseks kasutatakse meetodit fetch(). Selles skriptis kasutatakse seda abonendiandmete toomiseks tekstifailist edenemisribal töötlemiseks.
parseInt() Funktsioon parseInt() teisendab stringi täisarvuks. Siin eemaldab see kaldkriipsu ees oleva väärtuse (nt 42/50), et saada praegune tellijate arv.
split() Split() meetod jagab stringi eraldaja alusel massiiviks. Sel juhul kasutab see märki „/”, et eraldada praegune tellijate arv eesmärgist (42 väärtusest 42/50).
strokeDashoffset strokeDashoffset on SVG atribuut, mis juhib joone joonistamist. Siin manipuleeritakse SVG-ringi täituvuse dünaamiliseks muutmiseks tellimisprotsendi alusel.
setTimeout() See meetod kutsub funktsiooni pärast määratud viivitust. Seda kasutatakse siin siltide pööramise intervalli määramiseks, mis võimaldab mõne sekundi pärast ilmuda uutele siltidele.
cloneNode() CloneNode(true) kasutatakse sõlme, sealhulgas selle laste koopia loomiseks. See on oluline sildimalli dubleerimiseks ja DOM-i dünaamiliseks lisamiseks.
visibility Seda CSS-i atribuuti juhitakse siltide peitmiseks või kuvamiseks JavaScripti kaudu. See tagab, et pöörlemise ajal on korraga nähtav ainult üks silt.
strokeDasharray insultDasharray määrab SVG-joone kriipsude ja tühikute mustri. See on seatud kindlale väärtusele (450), et see vastaks ringi ümbermõõdule, mis on animeeritud joonega insultDashoffset.

SVG-ringide animeerimine JavaScriptiga: samm-sammult juhend

Selles näites lõime SVG-ringi jaoks dünaamilise animatsiooni, kasutades JavaScripti ja CSS-i kombinatsiooni. Peamine eesmärk on animeerida ringi edenemist, et kuvada visuaalselt tellimuste arvu reaalajas. Ring kasutab CSS-i omadus, mis määrab, kui suur osa ringi joonest on nähtav. JavaScripti kasutatakse edenemise protsendi toomiseks ja arvutamiseks ning seejärel selle väärtuse rakendamiseks joonele, võimaldades reaalajas andmetel põhinevat sujuvat animatsiooni.

Üks põhikomponent on funktsioon, mis hangib failist või serverist andmed, antud juhul tellimuste arvu. Skript ekstraheerib andmete numbrilise osa, kasutades stringiga manipuleerimise meetodeid, nagu ja teisendab tulemuse kasutatavaks arvuks koos . Jagades praeguse tellimuste arvu eesmärgiga, arvutame edenemise kümnendkohana (protsendina). Seejärel rakendatakse seda protsenti löök-kriips visuaalse efekti loomiseks.

Teine skript tegeleb siltide pööramisega, mis lisab kuvale dünaamilise sisu kihi. Sildid lisatakse DOM-ile, kasutades meetod, mis dubleerib olemasoleva sildimalli. Iga silti pööratakse määratud intervalliga, mida juhib funktsiooni. See meetod käivitab pööramise pärast määratud viivitust, luues sujuva ülemineku siltide vahel, ilma et oleks vaja kasutaja sekkumist.

Kombinatsioon ringi ja sildi pööramise skript loob köitva kasutajaliidese. Muutes dünaamiliselt nii ringi edenemist kui ka kuvatavaid silte, anname kasutajatele reaalajas visuaalse ülevaate edenemisest. Koodi modulaarsus tagab ka selle, et neid funktsioone saab hõlpsasti kohandada muude andmepõhiste rakendustega, muutes selle paindlikuks lahenduseks arendajatele, kes soovivad rakendada dünaamilisi kasutajaliidese elemente.

SVG edenemisribade animeerimine JavaScripti ja CSS-i võtmekaadritega

See lahendus kasutab esiotsa dünaamilise edenemisriba animatsiooni jaoks vanilje JavaScripti ja SVG-d. Skript ekstraheerib väärtused, arvutab protsendid ja rakendab need SVG-elemendi joonejoone nihkele sujuvaks animatsiooniks.

// 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));

Dünaamiline siltide pööramine JavaScriptiga

See lahendus pöörab JavaScripti abil erinevaid silte dünaamiliselt määratud ajavahemike järel. See toetab nii staatilisi kui ka pöörlevaid kuvasid, mis põhinevad kasutaja seadetel.

// 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";
}

Animatsioonide täiustamine JavaScripti ja CSS-i muutujatega

Üks oluline kasutamise aspekt animatsioonide juhtimine on selle võime nendega suhelda . Need muutujad võimaldavad arendajatel luua rohkem korduvkasutatavat ja hõlpsamini hooldatavat koodi. Näiteks animatsiooniväärtuste (nt insult-dashoffset) otse JavaScripti sisestamise asemel saate need defineerida CSS-i muutujatena ja manipuleerida nendega JavaScripti abil. See annab puhtama viisi animatsiooni atribuutide haldamiseks ning muudab koodi modulaarsemaks ja skaleeritavamaks.

Teine võimas funktsioon JavaScripti kombineerimisel CSS-iga on sündmuste kuulajate kasutamine. Sündmuspõhised animatsioonid võivad käivituda kasutaja interaktsioonide (nt nupul klõpsamise või lehe alla kerimise) põhjal. Meie näites saate interaktiivsuse lisamisega animatsiooni täiustada. Näiteks saab joone-kriipsu nihke ümber arvutada ja dünaamiliselt rakendada, kui kasutaja tellib või sooritab mõne muu toimingu. See loob väga kaasahaarava ja interaktiivse kogemuse, mis reageerib reaalajas andmetele.

Lisaks kombineerides võtmekaadritega on veel üks viis sujuvate ja tõhusate animatsioonide loomiseks. See meetod tagab, et animatsioone tehakse brauseri optimaalse ümbervärvimistsükli ajal, pakkudes paremat jõudlust võrreldes traditsioonilise setIntervali või setTimeoutiga. See tehnika on eriti kasulik, kui tegelete sagedaste animatsioonide või raskete JavaScripti protsessidega, mis muidu võivad kasutajaliidest aeglustada.

  1. Kuidas teeb mõjutada SVG animatsioone?
  2. The kontrollib, kui suur osa SVG tee joonest on nähtaval. Selle väärtuse muutmine võimaldab sujuvaid edenemislaadseid animatsioone.
  3. Mis on roll reaalajas animatsioonides?
  4. kasutatakse andmete toomiseks API-st või failist. Animatsioonides aitab see laadida dünaamilisi väärtusi, nagu tellijate arv, mida saab seejärel ekraanil animeerida.
  5. Saab kasutada animatsiooni intervallide juhtimiseks?
  6. Jah, saab kasutada viivituste tekitamiseks animatsioonides, näiteks siltide vaheaegade järel pööramiseks.
  7. Mis on eesmärk JavaScripti animatsiooni skriptides?
  8. teisendab stringi (nagu "42/50") täisarvuks, mis on vajalik dünaamiliste animatsioonide protsentide arvutamiseks.
  9. Miks ma peaksin kasutama asemel ?
  10. on optimeeritud animatsioonide jaoks, tagades sujuvamad üleminekud, sünkroonides need brauseri värvimistsükliga.

Kombineerimine CSS-iga võimaldab võimsaid ja dünaamilisi animatsioone, mis reageerivad reaalajas andmetele. Kui mõistate, kuidas arvutada väärtusi (nt protsenti) ja rakendada neid võtmekaadri animatsioonidele, saate luua köitvaid ja tundlikke kasutajaliideseid, mis kajastavad reaalajas edenemist või andmete värskendusi.

Selles juhendis käsitletud tehnikate abil saate hõlpsasti manipuleerida selliste omadustega nagu SVG-animatsioonide jaoks ja elemente dünaamiliselt pöörata. See kombinatsioon pakub skaleeritavat lahendust arendajatele, kes soovivad integreerida oma projektidesse dünaamilisi animatsioone reaalajas andmesisendiga.

  1. Üksikasjalik teave kasutamise kohta SVG-animatsioonide jaoks leiate aadressilt MDN Web Docs: insult-dashoffset .
  2. Täiendava ülevaate saamiseks JavaScripti ja CSS-i kasutavate dünaamiliste võtmekaadri animatsioonide kohta vt Smashing Magazine: CSS-i võtmekaadri animatsioonid .
  3. Täiendavad juhised DOM-iga manipuleerimiseks JavaScriptis on saadaval aadressil MDN-i veebidokumendid: cloneNode .
  4. Lisateave kasutamise kohta reaalajas andmete hankimiseks MDN Web Docs: toomine .