Atslēgkadru animēšana, pamatojoties uz dinamiskām vērtībām, izmantojot JavaScript

Stroke-dashoffset

Kā aprēķināt un animēt atslēgas kadru vērtības, izmantojot JavaScript

Veidojot dinamiskas tīmekļa lietojumprogrammas, JavaScript apvienošana ar CSS animācijām var radīt vienmērīgas, vizuāli pievilcīgas pārejas. Viens no izplatītākajiem izaicinājumiem ir elementu animēšana, pamatojoties uz reāllaika datu vērtībām. Lielisks piemērs ir atslēgkadra animāciju izveide, kas atspoguļo progresa joslas pašreizējo procentuālo daļu, izmantojot SVG un insulta-dashoffset.

Šī metode var būt īpaši noderīga, ja tiek rādītas dinamiskas vērtības, piemēram, abonentu skaits, kā tas ir šajā piemērā, kur abonementu skaits tiek atjaunināts reāllaikā. Lai animācija darbotos nevainojami, mēs varam pārvērst šo skaitli procentos un lietot to tieši CSS animācijai.

Tomēr JavaScript var būt mulsinošs, strādājot ar CSS animācijām, it īpaši, aprēķinot vērtības, piemēram, procentus, lai efektīvi manipulētu ar atslēgas kadriem. Šajā gadījumā ir ļoti svarīgi saprast, kā iegūt un apstrādāt dinamiskos datus, izmantojot JavaScript, lai nodrošinātu, ka jūsu animācijas atspoguļo pareizo vērtību.

Šis raksts palīdzēs jums izmantot JavaScript, lai noņemtu skaitliskos datus, aprēķinātu procentus un lietotu tos atslēgas kadriem, izmantojot rekvizītu insulta-dashoffset. Beigās jums būs skaidra izpratne par to, kā JavaScript un CSS var darboties kopā, lai izveidotu adaptīvas animācijas.

Komanda Lietošanas piemērs
fetch() Metode fetch() tiek izmantota, lai pieprasītu datus no resursa (piemēram, teksta faila, API). Šajā skriptā to izmanto, lai izgūtu abonenta datus no teksta faila apstrādei norises joslā.
parseInt() Funkcija parseInt() pārvērš virkni par veselu skaitli. Šeit tā noņem vērtību pirms slīpsvītras (piemēram, 42/50), lai iegūtu pašreizējo abonentu skaitu.
split() Split() metode sadala virkni masīvā, pamatojoties uz atdalītāju. Šajā gadījumā tā izmanto “/”, lai atdalītu pašreizējo abonentu skaitu no mērķa (42 no 42/50).
strokeDashoffset strokeDashoffset ir SVG atribūts, kas kontrolē insulta uzzīmēšanu. Šeit tiek manipulēts, lai dinamiski mainītu SVG loka aizpildījumu, pamatojoties uz abonēšanas procentuālo daudzumu.
setTimeout() Šī metode izsauc funkciju pēc noteiktas aizkaves. Šeit to izmanto, lai iestatītu uzlīmju pagriešanas intervālu, ļaujot pēc dažām sekundēm parādīties jaunas etiķetes.
cloneNode() cloneNode(true) tiek izmantots, lai izveidotu mezgla kopiju, ieskaitot tā atvases. Tas ir būtiski, lai kopētu etiķetes veidni un dinamiski pievienotu to DOM.
visibility Šis CSS rekvizīts tiek kontrolēts, izmantojot JavaScript, lai paslēptu vai rādītu iezīmes. Tas nodrošina, ka rotācijas laikā vienlaikus ir redzama tikai viena etiķete.
strokeDasharray strokeDasharray definē domuzīmju un atstarpju modeli SVG insultā. Tas ir iestatīts uz noteiktu vērtību (450), lai tas atbilstu apļa apkārtmēram, kas ir animēts ar strokeDashoffset.

SVG loku animēšana, izmantojot JavaScript: soli pa solim

Šajā piemērā mēs izveidojām dinamisku animāciju SVG lokam, izmantojot JavaScript un CSS kombināciju. Galvenais mērķis ir animēt apļa norisi, lai vizuāli attēlotu abonementu skaitu reāllaikā. Aplis izmanto CSS rekvizīts, kas nosaka, cik liela daļa apļa gājiena ir redzama. JavaScript tiek izmantots, lai iegūtu un aprēķinātu progresa procentuālo daļu un pēc tam lietotu šo vērtību gājienam, nodrošinot vienmērīgu animāciju, pamatojoties uz reāllaika datiem.

Viena no galvenajām sastāvdaļām ir funkcija, kas izgūst datus no faila vai servera, šajā gadījumā abonementu skaitu. Skripts izvelk datu skaitlisko daļu, izmantojot virkņu manipulācijas metodes, piemēram, , un pārvērš rezultātu par izmantojamu skaitli ar . Dalot pašreizējo abonementu skaitu ar mērķi, progresu aprēķinām kā decimāldaļu (procentos). Pēc tam šī procentuālā daļa tiek piemērota insults-dashoffset lai radītu vizuālo efektu.

Otrais skripts apstrādā etiķešu rotāciju, kas displejam pievieno dinamiska satura slāni. Etiķetes tiek pievienotas DOM, izmantojot metode, kas dublē esošu etiķetes veidni. Katra etiķete tiek pagriezta noteiktā intervālā, ko kontrolē funkciju. Šī metode aktivizē rotāciju pēc noteiktas aizkaves, radot vienmērīgu pāreju starp etiķetēm bez lietotāja iejaukšanās.

Kombinācija no aplim un etiķetes rotācijas skripts izveido saistošu lietotāja interfeisu. Dinamiski mainot gan apļa norisi, gan parādītās etiķetes, mēs lietotājiem sniedzam vizuālu norādi par progresu reāllaikā. Koda modularitāte nodrošina arī to, ka šīs funkcijas var viegli pielāgot citām datu vadītām lietojumprogrammām, padarot to par elastīgu risinājumu izstrādātājiem, kuri vēlas ieviest dinamiskus lietotāja interfeisa elementus.

SVG norises joslu animēšana ar JavaScript un CSS atslēgkadriem

Šis risinājums izmanto vaniļas JavaScript un SVG priekšgala dinamiskai progresa joslas animācijai. Skripts izvelk vērtības, aprēķina procentus un piemēro tos SVG elementa gājiena-dashoffset vienmērīgai animācijai.

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

Dinamiskā etiķešu rotācija ar JavaScript

Šis risinājums dinamiski rotē dažādas etiķetes noteiktos intervālos, izmantojot JavaScript. Tas atbalsta gan statiskus, gan rotējošus displejus, pamatojoties uz lietotāja iestatījumiem.

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

Animāciju uzlabošana ar JavaScript un CSS mainīgajiem

Viens svarīgs lietošanas aspekts kontrolēt animācijas ir tās spēja mijiedarboties ar . Šie mainīgie ļauj izstrādātājiem izveidot vairāk atkārtoti lietojamu un viegli uzturējamu kodu. Piemēram, tā vietā, lai tieši JavaScript kodētu animācijas vērtības, piemēram, insultu-dashoffset, varat tās definēt kā CSS mainīgos un manipulēt ar tām, izmantojot JavaScript. Tas nodrošina tīrāku veidu, kā pārvaldīt animācijas rekvizītus, un padara jūsu kodu modulārāku un mērogojamāku.

Vēl viena spēcīga funkcija, apvienojot JavaScript ar CSS, ir notikumu klausītāju izmantošana. Notikumu vadītas animācijas var tikt aktivizētas, pamatojoties uz lietotāja mijiedarbību, piemēram, noklikšķinot uz pogas vai ritinot lapu uz leju. Mūsu piemērā varat uzlabot animāciju, pievienojot interaktivitāti. Piemēram, gājiena nobīdi var pārrēķināt un dinamiski lietot ikreiz, kad lietotājs abonē vai veic citu darbību. Tas rada ļoti saistošu un interaktīvu pieredzi, kas reaģē uz reāllaika datiem.

Turklāt, apvienojot ar atslēgas kadriem ir vēl viens veids, kā izveidot vienmērīgas un efektīvas animācijas. Šī metode nodrošina, ka pārlūkprogrammas optimālā pārkrāsošanas cikla laikā tiek veiktas animācijas, nodrošinot labāku veiktspēju salīdzinājumā ar tradicionālo setInterval vai setTimeout. Šī metode ir īpaši noderīga, strādājot ar biežu animāciju vai smagiem JavaScript procesiem, kas citādi var palēnināt lietotāja saskarni.

  1. Kā dara ietekmēt SVG animācijas?
  2. The kontrolē, cik liela daļa SVG ceļa gājiena ir redzama. Mainot tā vērtību, tiek nodrošinātas vienmērīgas progresam līdzīgas animācijas.
  3. Kāda ir loma reāllaika animācijās?
  4. tiek izmantots, lai izgūtu datus no API vai faila. Animācijās tas palīdz ielādēt dinamiskas vērtības, piemēram, abonentu skaitu, ko pēc tam var animēt ekrānā.
  5. Var izmantot, lai kontrolētu animācijas intervālus?
  6. Jā, var izmantot, lai ieviestu aizkavēšanos animācijās, piemēram, pagriežot etiķetes ar intervāliem.
  7. Kāds ir mērķis JavaScript animācijas skriptos?
  8. pārvērš virkni (piemēram, "42/50") par veselu skaitli, kas ir nepieciešams procentu aprēķināšanai dinamiskās animācijās.
  9. Kāpēc man vajadzētu lietot vietā ?
  10. ir optimizēts animācijām, nodrošinot vienmērīgākas pārejas, sinhronizējot tās ar pārlūkprogrammas pārkrāsošanas ciklu.

Apvienojot ar CSS ļauj izveidot jaudīgas un dinamiskas animācijas, kas var reaģēt uz reāllaika datiem. Izprotot, kā aprēķināt vērtības, piemēram, procentus un lietot tās atslēgkadru animācijām, varat izveidot saistošas ​​un atsaucīgas lietotāja saskarnes, kas atspoguļo reāllaika norisi vai datu atjauninājumus.

Izmantojot šajā rokasgrāmatā aprakstītās metodes, varat viegli manipulēt ar tādām īpašībām kā SVG animācijām un dinamiski pagriezt elementus. Šī kombinācija nodrošina mērogojamu risinājumu izstrādātājiem, kuri vēlas integrēt dinamiskas animācijas savos projektos ar reāllaika datu ievadi.

  1. Sīkāka informācija par lietošanu SVG animācijām var atrast vietnē MDN tīmekļa dokumenti: insults-dashoffset .
  2. Lai iegūtu plašāku ieskatu dinamiskās atslēgkadra animācijās, izmantojot JavaScript un CSS, skatiet Smashing Magazine: CSS atslēgas kadru animācijas .
  3. Papildu norādījumi par manipulācijām ar DOM ar JavaScript valodā ir pieejams vietnē MDN tīmekļa dokumenti: cloneNode .
  4. Uzziniet vairāk par lietošanu lai izgūtu datus reāllaikā no MDN tīmekļa dokumenti: izmantošana Fetch .