Κίνηση βασικών καρέ με βάση δυναμικές τιμές με JavaScript

Stroke-dashoffset

Τρόπος υπολογισμού και κίνησης τιμών βασικού καρέ χρησιμοποιώντας JavaScript

Κατά τη δημιουργία δυναμικών εφαρμογών Ιστού, ο συνδυασμός JavaScript με κινούμενα σχέδια CSS μπορεί να δημιουργήσει ομαλές, οπτικά ελκυστικές μεταβάσεις. Μια κοινή πρόκληση είναι η κίνηση στοιχείων που βασίζονται σε τιμές δεδομένων σε πραγματικό χρόνο. Ένα εξαιρετικό παράδειγμα είναι η δημιουργία κινούμενων εικόνων βασικών καρέ που αντικατοπτρίζουν το τρέχον ποσοστό μιας γραμμής προόδου χρησιμοποιώντας SVG και stroke-dashoffset.

Αυτή η τεχνική μπορεί να είναι ιδιαίτερα χρήσιμη όταν εμφανίζετε δυναμικές τιμές όπως πλήθος συνδρομητών, όπως σε αυτό το παράδειγμα όπου ο αριθμός των συνδρομών ενημερώνεται σε πραγματικό χρόνο. Για να κάνουμε το animation να λειτουργεί απρόσκοπτα, μπορούμε να μετατρέψουμε αυτόν τον αριθμό σε ποσοστό και να τον εφαρμόσουμε απευθείας στο animation CSS.

Ωστόσο, η JavaScript μπορεί να προκαλέσει σύγχυση όταν ασχολείστε με κινούμενα σχέδια CSS, ειδικά κατά τον υπολογισμό τιμών όπως ποσοστά για τον αποτελεσματικό χειρισμό βασικών καρέ. Σε αυτήν την περίπτωση, η κατανόηση του τρόπου εξαγωγής και χειρισμού δυναμικών δεδομένων με JavaScript είναι ζωτικής σημασίας για να διασφαλιστεί ότι τα κινούμενα σχέδια αντικατοπτρίζουν τη σωστή τιμή.

Αυτό το άρθρο θα σας καθοδηγήσει στη χρήση JavaScript για την απογύμνωση αριθμητικών δεδομένων, τον υπολογισμό ποσοστών και την εφαρμογή τους σε βασικά καρέ χρησιμοποιώντας την ιδιότητα stroke-dashoffset. Στο τέλος, θα έχετε ξεκάθαρη κατανόηση του τρόπου με τον οποίο η JavaScript και η CSS μπορούν να συνεργαστούν για να δημιουργήσουν κινούμενα σχέδια με απόκριση.

Εντολή Παράδειγμα χρήσης
fetch() Η μέθοδος fetch() χρησιμοποιείται για να ζητήσει δεδομένα από έναν πόρο (π.χ. αρχείο κειμένου, API). Σε αυτό το σενάριο, χρησιμοποιείται για τη λήψη δεδομένων συνδρομητή από ένα αρχείο κειμένου για επεξεργασία στη γραμμή προόδου.
parseInt() Η συνάρτηση parseInt() μετατρέπει μια συμβολοσειρά σε ακέραιο. Εδώ, αφαιρεί την τιμή πριν από την κάθετο (π.χ. 42/50) για να πάρει τον τρέχοντα αριθμό συνδρομητών.
split() Η μέθοδος split() χωρίζει μια συμβολοσειρά σε έναν πίνακα που βασίζεται σε έναν οριοθέτη. Σε αυτήν την περίπτωση, χρησιμοποιεί το '/' για να διαχωρίσει τον τρέχοντα αριθμό συνδρομητών από τον στόχο (42 από 42/50).
strokeDashoffset strokeDashoffset είναι ένα χαρακτηριστικό SVG που ελέγχει τον τρόπο σχεδίασης μιας διαδρομής. Εδώ γίνεται χειρισμός για να αλλάζει δυναμικά το γέμισμα του κύκλου SVG με βάση το ποσοστό συνδρομής.
setTimeout() Αυτή η μέθοδος καλεί μια συνάρτηση μετά από μια καθορισμένη καθυστέρηση. Χρησιμοποιείται εδώ για να ορίσετε το διάστημα για την περιστροφή των ετικετών, επιτρέποντας την εμφάνιση νέων ετικετών μετά από λίγα δευτερόλεπτα.
cloneNode() Το cloneNode(true) χρησιμοποιείται για τη δημιουργία αντιγράφου ενός κόμβου, συμπεριλαμβανομένων των παιδιών του. Αυτό είναι απαραίτητο για την αντιγραφή του προτύπου ετικέτας και την δυναμική προσθήκη του στο DOM.
visibility Αυτή η ιδιότητα CSS ελέγχεται μέσω JavaScript για απόκρυψη ή εμφάνιση ετικετών. Εξασφαλίζει ότι μόνο μία ετικέτα είναι ορατή κάθε φορά κατά την περιστροφή.
strokeDasharray strokeDasharray ορίζει το μοτίβο των παύλων και των κενών σε μια διαδρομή SVG. Έχει οριστεί σε μια συγκεκριμένη τιμή (450) για να ταιριάζει με την περιφέρεια του κύκλου, η οποία κινείται με strokeDashoffset.

Κινούμενη κίνηση κύκλων SVG με JavaScript: Ένας οδηγός βήμα προς βήμα

Σε αυτό το παράδειγμα, δημιουργήσαμε μια δυναμική κίνηση για έναν κύκλο SVG χρησιμοποιώντας έναν συνδυασμό JavaScript και CSS. Ο κύριος στόχος είναι η κίνηση της προόδου ενός κύκλου για την οπτική αναπαράσταση ενός αριθμού συνδρομών σε πραγματικό χρόνο. Ο κύκλος χρησιμοποιεί το Η ιδιότητα CSS, η οποία ελέγχει πόσο από την διαδρομή του κύκλου είναι ορατή. Η JavaScript χρησιμοποιείται για την ανάκτηση και τον υπολογισμό του ποσοστού προόδου και, στη συνέχεια, την εφαρμογή αυτής της τιμής στο stroke, επιτρέποντας την ομαλή κίνηση βάσει δεδομένων σε πραγματικό χρόνο.

Ένα βασικό συστατικό είναι το λειτουργία, η οποία ανακτά δεδομένα από ένα αρχείο ή διακομιστή, σε αυτήν την περίπτωση, τον αριθμό των συνδρομών. Το σενάριο εξάγει το αριθμητικό μέρος των δεδομένων χρησιμοποιώντας μεθόδους χειρισμού συμβολοσειρών όπως , και μετατρέπει το αποτέλεσμα σε χρησιμοποιήσιμο αριθμό με . Διαιρώντας τον τρέχοντα αριθμό συνδρομών με τον στόχο, υπολογίζουμε την πρόοδο ως δεκαδικό (ποσοστό). Αυτό το ποσοστό εφαρμόζεται στη συνέχεια στο stroke-dashoffset για να δημιουργήσετε το οπτικό αποτέλεσμα.

Το δεύτερο σενάριο χειρίζεται την περιστροφή ετικετών, η οποία προσθέτει ένα επίπεδο δυναμικού περιεχομένου στην οθόνη. Οι ετικέτες προστίθενται στο DOM χρησιμοποιώντας το μέθοδος, η οποία αντιγράφει ένα υπάρχον πρότυπο ετικέτας. Κάθε ετικέτα περιστρέφεται σε ένα καθορισμένο διάστημα, το οποίο ελέγχεται από το λειτουργία. Αυτή η μέθοδος ενεργοποιεί την περιστροφή μετά από μια καθορισμένη καθυστέρηση, δημιουργώντας μια ομαλή μετάβαση μεταξύ των ετικετών χωρίς να απαιτείται η αλληλεπίδραση του χρήστη.

Ο συνδυασμός των για τον κύκλο και το σενάριο περιστροφής ετικέτας δημιουργεί μια ελκυστική διεπαφή χρήστη. Αλλάζοντας δυναμικά τόσο την πρόοδο του κύκλου όσο και τις ετικέτες που εμφανίζονται, δίνουμε στους χρήστες μια οπτική ένδειξη της προόδου σε πραγματικό χρόνο. Η αρθρωτότητα του κώδικα διασφαλίζει επίσης ότι αυτές οι δυνατότητες μπορούν να προσαρμοστούν εύκολα σε άλλες εφαρμογές που βασίζονται σε δεδομένα, καθιστώντας τον μια ευέλικτη λύση για προγραμματιστές που θέλουν να εφαρμόσουν στοιχεία δυναμικής διεπαφής χρήστη.

Κινούμενη γραμμή προόδου SVG με JavaScript και βασικά καρέ CSS

Αυτή η λύση χρησιμοποιεί vanilla JavaScript και SVG για δυναμική κίνηση της γραμμής προόδου στο front-end. Το σενάριο εξάγει τιμές, υπολογίζει τα ποσοστά και τα εφαρμόζει στο stroke-dashoffset ενός στοιχείου SVG για ομαλή κίνηση.

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

Δυναμική εναλλαγή ετικετών με JavaScript

Αυτή η λύση περιστρέφει διαφορετικές ετικέτες δυναμικά σε καθορισμένα διαστήματα χρησιμοποιώντας JavaScript. Υποστηρίζει τόσο στατικές όσο και περιστρεφόμενες οθόνες με βάση τις ρυθμίσεις χρήστη.

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

Βελτίωση κινούμενων εικόνων με μεταβλητές JavaScript και CSS

Μια σημαντική πτυχή της χρήσης ο έλεγχος των κινούμενων σχεδίων είναι η ικανότητά του να αλληλεπιδρά με . Αυτές οι μεταβλητές επιτρέπουν στους προγραμματιστές να δημιουργήσουν περισσότερο επαναχρησιμοποιήσιμο και εύκολα συντηρήσιμο κώδικα. Για παράδειγμα, αντί να κωδικοποιείτε τιμές κινούμενων εικόνων όπως το stroke-dashoffset απευθείας στο JavaScript, μπορείτε να τις ορίσετε ως μεταβλητές CSS και να τις χειριστείτε χρησιμοποιώντας JavaScript. Αυτό παρέχει έναν πιο καθαρό τρόπο διαχείρισης των ιδιοτήτων κινούμενων εικόνων σας και κάνει τον κώδικά σας πιο αρθρωτό και επεκτάσιμο.

Ένα άλλο ισχυρό χαρακτηριστικό κατά τον συνδυασμό JavaScript με CSS είναι η χρήση προγραμμάτων ακρόασης συμβάντων. Τα κινούμενα σχέδια που βασίζονται σε συμβάντα μπορούν να ενεργοποιηθούν με βάση τις αλληλεπιδράσεις των χρηστών, όπως το κλικ σε ένα κουμπί ή η κύλιση προς τα κάτω σε μια σελίδα. Στο παράδειγμά μας, θα μπορούσατε να βελτιώσετε την κινούμενη εικόνα προσθέτοντας διαδραστικότητα. Για παράδειγμα, το stroke-dashoffset μπορεί να υπολογιστεί εκ νέου και να εφαρμοστεί δυναμικά κάθε φορά που ένας χρήστης εγγράφεται ή εκτελεί άλλη ενέργεια. Αυτό δημιουργεί μια εξαιρετικά ελκυστική και διαδραστική εμπειρία που ανταποκρίνεται σε δεδομένα σε πραγματικό χρόνο.

Επιπλέον, συνδυάζοντας με βασικά καρέ είναι ένας άλλος τρόπος για τη δημιουργία ομαλών και αποτελεσματικών κινούμενων εικόνων. Αυτή η μέθοδος διασφαλίζει ότι οι κινούμενες εικόνες εκτελούνται κατά τη διάρκεια του βέλτιστου κύκλου επαναβαφής του προγράμματος περιήγησης, παρέχοντας καλύτερη απόδοση σε σύγκριση με το παραδοσιακό setInterval ή setTimeout. Αυτή η τεχνική είναι ιδιαίτερα χρήσιμη όταν αντιμετωπίζετε συχνά κινούμενα σχέδια ή βαριές διεργασίες JavaScript που διαφορετικά μπορεί να επιβραδύνουν τη διεπαφή χρήστη.

  1. Πώς κάνει επηρεάζουν τα κινούμενα σχέδια SVG;
  2. Ο ελέγχει πόσο είναι ορατή η διαδρομή της διαδρομής SVG. Η αλλαγή της τιμής του επιτρέπει κινούμενα σχέδια που μοιάζουν με ομαλή πρόοδο.
  3. Ποιος είναι ο ρόλος του σε κινούμενα σχέδια σε πραγματικό χρόνο;
  4. χρησιμοποιείται για την ανάκτηση δεδομένων από ένα API ή αρχείο. Στα κινούμενα σχέδια, αυτό βοηθά στη φόρτωση δυναμικών τιμών, όπως πλήθος συνδρομητών, οι οποίες στη συνέχεια μπορούν να κινούνται στην οθόνη.
  5. Κουτί να χρησιμοποιηθεί για τον έλεγχο διαστημάτων κινούμενων εικόνων;
  6. Ναί, μπορεί να χρησιμοποιηθεί για την εισαγωγή καθυστερήσεων σε κινούμενα σχέδια, όπως η περιστροφή ετικετών κατά διαστήματα.
  7. Ποιος είναι ο σκοπός του σε σενάρια κινούμενων εικόνων JavaScript;
  8. μετατρέπει μια συμβολοσειρά (όπως "42/50") σε ακέραιο, ο οποίος είναι απαραίτητος για τον υπολογισμό ποσοστών σε δυναμικά κινούμενα σχέδια.
  9. Γιατί να χρησιμοποιήσω αντί για ?
  10. είναι βελτιστοποιημένη για κινούμενα σχέδια, εξασφαλίζοντας ομαλότερες μεταβάσεις συγχρονίζοντάς τες με τον κύκλο επαναβάφωσης του προγράμματος περιήγησης.

Συνδυάζοντας με το CSS επιτρέπει ισχυρά και δυναμικά κινούμενα σχέδια που μπορούν να ανταποκριθούν σε δεδομένα σε πραγματικό χρόνο. Κατανοώντας πώς να υπολογίζετε τιμές όπως ποσοστά και να τις εφαρμόζετε σε κινούμενα σχέδια καρέ-κλειδιού, μπορείτε να δημιουργήσετε ελκυστικές και ανταποκρινόμενες διεπαφές χρήστη που αντικατοπτρίζουν ζωντανή πρόοδο ή ενημερώσεις δεδομένων.

Με τις τεχνικές που καλύπτονται σε αυτόν τον οδηγό, μπορείτε εύκολα να χειριστείτε ιδιότητες όπως για κινούμενα σχέδια SVG και δυναμική περιστροφή στοιχείων. Αυτός ο συνδυασμός παρέχει μια επεκτάσιμη λύση για προγραμματιστές που θέλουν να ενσωματώσουν δυναμικά κινούμενα σχέδια στα έργα τους με εισαγωγές δεδομένων σε πραγματικό χρόνο.

  1. Αναλυτικές πληροφορίες για τη χρήση για κινούμενα σχέδια SVG μπορείτε να βρείτε στη διεύθυνση MDN Web Docs: stroke-dashoffset .
  2. Για περισσότερες πληροφορίες σχετικά με τα δυναμικά κινούμενα σχέδια βασικών καρέ που χρησιμοποιούν JavaScript και CSS, βλ Smashing Magazine: CSS Keyframe Animations .
  3. Πρόσθετες οδηγίες για το χειρισμό του DOM με σε JavaScript είναι διαθέσιμο στη διεύθυνση Έγγραφα Ιστού MDN: cloneNode .
  4. Μάθετε περισσότερα σχετικά με τη χρήση για ανάκτηση δεδομένων σε πραγματικό χρόνο από Έγγραφα Ιστού MDN: Χρήση του Fetch .