Εισαγωγή
Κατά την ανάπτυξη ιστότοπων και εφαρμογών ιστού, συμπεριλαμβανομένης της φόρτωσης κινούμενων εικόνων μπορεί να βελτιώσει σημαντικά την εμπειρία του χρήστη με την επικοινωνία με το τι συμβαίνει. Αυτό προσελκύει τους χρήστες και κρατά την προσοχή τους κατά τη φόρτωση του περιεχομένου και βοηθά τους χρήστες να κατανοήσουν τι συμβαίνει αντί να τους αφήνει να μαντέψουν.
Σε αυτόν τον οδηγό, θα δούμε πώς να χρησιμοποιήσετε το Vanilla JavaScript για να δημιουργήσετε ένα κινούμενο σχέδιο φόρτωσης. Θα δουλέψουμε και με τα δύο κινούμενα σχέδια GIFs και φορτωτές που δημιουργήθηκαν από CSS και δείτε πώς να τις χρησιμοποιήσετε σε δύο σενάρια: φόρτωση περιεχομένου κατά την εκκίνηση εφαρμογής/ιστοτόπου ή αίτηση περιεχομένου από ένα εξωτερικό API.
Πώς να δημιουργήσετε έναν φορτωτή
Υπάρχουν διάφοροι τρόποι με τους οποίους οι άνθρωποι μπορεί να θέλουν να εμφανίσουν τον φορτωτή τους. Για τους σκοπούς αυτού του οδηγού, θα δημιουργήσουμε ένα πρόγραμμα φόρτωσης που θα καλύπτει ολόκληρη την οθόνη και στη συνέχεια θα εξαφανίζεται όταν ολοκληρωθεί η φόρτωση της σελίδας. Πρώτα απ 'όλα, πρέπει να δημιουργήσουμε μια σελίδα HTML κράτησης θέσης:
<div class="loader-container"> <div class="spinner"></div>
</div> <div class="main-content"> <h1>Hello World!</h1> <p> This is a demo Project to show how to add animated loading with Vanilla JavaScript. </p> <div class="buttons"> <button class="btn"><a href="#">Read Article</a></button> <button class="btn get-quote">Generate Quote</button> </div> <div class="quote-section"> <blockquote class="quote"> If you do not express your own original ideas, if you do not listen to your own being, you will have betrayed yourself. </blockquote> <span class="author">- Rollo May</span> </div>
</div>
Για λόγους απλότητας, έχουμε μόνο δύο <div>
μπλοκ – ένα για το πρόγραμμα φόρτωσης και ένα για το περιεχόμενο του ιστότοπου.
Όπως αναφέρθηκε προηγουμένως, το εικονίδιο φόρτωσης μπορεί να είναι α GIF, ένα κινούμενο εικονίδιο που δημιουργήθηκε με CSS ή κάτι άλλο. Το σημαντικό πράγμα που πρέπει να θυμόμαστε είναι ότι η ίδια προσέγγιση ισχύει για κάθε τύπο εικονιδίου φόρτωσης που χρησιμοποιούμε.
Δημιουργία Loader με χρήση GIF
A GIF είναι ένα κινούμενο εικονίδιο που παίζει επ' αόριστον. Μια φορά δημιουργήσαμε το δικό μας GIF, θα διαμορφώσουμε το loader-container
div που θα το στεγάσει. Υπάρχουν πολλοί τρόποι για να το στυλίσετε! Μπορείτε να γίνετε πραγματικά δημιουργικοί εδώ. Απλώς θα προσθέσουμε ένα στρώμα με μαύρο φόντο στο επάνω μέρος της σελίδας μας δίπλα στο εικονίδιο, για να «αποκλείσουμε» το περιεχόμενο φόρτωσης:
.loader-container { width: 100%; height: 100vh; position: fixed; background: #000 url("https://media.giphy.com/media/8agqybiK5LW8qrG3vJ/giphy.gif") center no-repeat; z-index: 1;
}
Όταν φορτώσουμε την ιστοσελίδα μας τώρα, θα δούμε ένα μαύρο φόντο με ένα GIF φόρτωση στη μέση της οθόνης, παρόμοια με αυτό:
Σε αυτό το σημείο, είμαστε έτοιμοι να εφαρμόσουμε τη φόρτωση χρησιμοποιώντας JavaScript. Αλλά ας δούμε επίσης πώς μπορούμε να χρησιμοποιήσουμε κινούμενα σχέδια που δημιουργούνται με CSS αντί για α GIF, το οποίο δεν απαιτεί πρόσθετο αρχείο για εισαγωγή.
Δημιουργία Loader με χρήση CSS
Θα δημιουργήσουμε ακριβώς το ίδιο εικονίδιο με το CSS. Θυμηθείτε, δημιουργήσαμε ένα επιπλέον div (spinner
) μεσα στην loader-container
div και αυτό είναι που θα χρησιμοποιήσουμε για να αναπαραστήσουμε το εικονίδιο:
.spinner { width: 64px; height: 64px; border: 8px solid; border-color: #3d5af1 transparent #3d5af1 transparent; border-radius: 50%; animation: spin-anim 1.2s linear infinite;
} @keyframes spin-anim { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); }
}
Ο παραπάνω κώδικας θα μας βοηθήσει να δημιουργήσουμε ένα εικονίδιο φόρτωσης CSS του οποίου μπορούμε τώρα να χρησιμοποιήσουμε το div loader-container για να κεντράρουμε και να προσθέσουμε το μαύρο φόντο όπως κάναμε προηγουμένως:
.loader-container { width: 100%; height: 100vh; display: flex; justify-content: center; align-items: center; position: fixed; background: #000; z-index: 1;
}
Τώρα που είδαμε τους δύο τύπους κινούμενων φορτωτών που είναι διαθέσιμοι, ας χρησιμοποιήσουμε JavaScript για να ελέγξουμε πότε εμφανίζεται και πότε εξαφανίζεται αυτό το κινούμενο σχέδιο φόρτωσης.
Σημείωση: Μπορείτε να το δείτε ζωντανά Επίδειξη CodePen για να ρίξετε μια ματιά στο πρόγραμμα φόρτωσης που δημιουργήσαμε σε δράση.
Πώς να εφαρμόσετε ένα κινούμενο σχέδιο φόρτωσης με JavaScript
Η JavaScript μας επιτρέπει να χειριστούμε τη δομή HTML μας και να αφαιρέσουμε ή να αποκρύψουμε την loader-container
που εμφανίζεται αυτήν τη στιγμή μπροστά απο περιεχόμενο της ιστοσελίδας. Υπάρχουν δύο κύριες προσεγγίσεις για να το πετύχετε αυτό – απλώς να το κρύψετε loader-container
, ή να το αφαιρέσετε εντελώς.
Όποια προσέγγιση κι αν επιλέξετε, το πρώτο βήμα είναι να χρησιμοποιήσετε το querySelector()
or getElementById()
για να ανακτήσετε το loader-container
ώστε να μπορούμε να το χειριστούμε:
const loaderContainer = document.querySelector('.loader-container');
Δεύτερον, θα χρησιμοποιήσουμε το eventListener
να ακούσω για α load
συμβάν, έτσι ώστε να καλεί τη συνάρτηση επανάκλησης όταν το load
συμβαίνει το συμβάν:
window.addEventListener('load', () => { // ...
});
Απόκρυψη του στοιχείου Φόρτωση…
Η πιο κοινή προσέγγιση είναι η απόκρυψη του loader-container
με display: none
έτσι ώστε να εξαφανίζεται όταν το περιεχόμενο φορτωθεί πλήρως.
Το HTML DOM μας επιτρέπει να αλλάξουμε το στυλ των στοιχείων HTML από JavaScript και ο παρακάτω κώδικας υποδεικνύει ότι ρυθμίζουμε το κοντέινερ του φορτωτή display
ιδιοκτησία να none
ώστε να μην εμφανιστεί μια φορά το load
είναι επιτυχής:
window.addEventListener('load', () => { loaderContainer.style.display = 'none';
});
Εναλλακτικά, μπορείτε να δημιουργήσετε μια ξεχωριστή κλάση που ισχύει display: none
ιδιοκτησία:
.loader-container-hidden { display: none;
}
Και στη συνέχεια χρησιμοποιήστε classList.add()
για να προσθέσετε την τάξη στο loader-container
στοιχείο:
window.addEventListener('load', () => { loaderContainer.classList.add('loader-container-hidden');
});
Αφαίρεση του στοιχείου Φόρτωση…
Μέχρι στιγμής, έχουμε δει μια σημαντική μέθοδο που μας επιτρέπει να κρύβουμε τα δικά μας loader-container
, υπονοώντας ότι το στοιχείο είναι ακόμα παρόν, αλλά κρυμμένο. Μια άλλη επιλογή είναι να αφαιρέσετε εντελώς το στοιχείο:
window.addEventListener('load', () => { loaderContainer.parentElement.removeChild(loaderContainer);
});
Σε αυτό το σημείο, όταν φορτώνουμε τη σελίδα μας, θα εμφανίζεται το κινούμενο σχέδιο φόρτωσης μέχρι να φορτωθεί πλήρως το περιεχόμενο της σελίδας.
Εφαρμογή φόρτωσης κινούμενων εικόνων όταν ζητάτε εξωτερικό περιεχόμενο από ένα API
Η ανάκτηση περιεχομένου από ένα εξωτερικό API είναι μια άλλη κατάσταση που μπορεί να χρειαστεί τη συμπερίληψη ενός προγράμματος φόρτωσης. Αυτός ο τύπος περιεχομένου μπορεί να πάρει λίγο χρόνο για να ανακτηθεί και να εμφανιστεί, επομένως είναι καλύτερο να συμπεριλάβετε ένα πρόγραμμα φόρτωσης.
Στην περίπτωσή μας, ας προσπαθήσουμε να πάρουμε ένα απόσπασμα από το α αποσπάσματα API χρησιμοποιώντας το ενσωματωμένο Fetch API. Σημειώστε ότι το HTML που δημιουργήσαμε στην αρχή αυτού του άρθρου έχει α "Δημιουργία προσφοράς" κουμπί. Το μόνο που έχουμε να κάνουμε είναι να χρησιμοποιήσουμε το document.querxySelector()
μέθοδος λήψης του στοιχείου και δημιουργίας συνάρτησης επανάκλησης για χειρισμό α click
συμβάν που ενεργοποιείται όταν ο χρήστης κάνει κλικ στο κουμπί:
const getQuoteBtn = document.querySelector('.get-quote'); getQuoteBtn.addEventListener('click', () => { fetch('https://api.quotable.io/random') .then((response) => { return response.json(); }) .then((data) => { const quote = document.querySelector('.quote'); const author = document.querySelector('.author'); quote.innerHTML = data.content; author.innerHTML = data.author; });
});
Αυτό θα μας βοηθήσει με επιτυχία να εισάγουμε τυχαίες προσφορές στην αίτησή μας, αλλά θα θέλαμε να έχουμε ένα φόρτωση κινούμενης εικόνας ώστε ο χρήστης να γνωρίζει ότι περιμένουμε περιεχόμενο. Για να το πετύχουμε αυτό, θα δημιουργήσουμε δύο μεθόδους, μία για την εμφάνιση της loader-container
και το άλλο να το κρύψει:
const displayLoading = () => { loaderContainer.style.display = 'block';
}; const hideLoading = () => { loaderContainer.style.display = 'none';
};
Σημείωση: Χρησιμοποιούμε display: none
, αλλά μπορούμε να χρησιμοποιήσουμε οποιαδήποτε από τις άλλες μεθόδους που αναφέραμε προηγουμένως.
Σε αυτό το σημείο, μπορούμε τελικά να ενσωματώσουμε το κινούμενο σχέδιο φόρτωσης στη συνάρτηση επανάκλησης. Όταν ξεκινήσει η ανάκτηση, η λειτουργία επανάκλησης θα εμφανίσει το κινούμενο σχέδιο φόρτωσης και θα το αποκρύψει μόλις ληφθούν τα δεδομένα:
getQuoteBtn.addEventListener('click', () => { displayLoading(); fetch('https://api.quotable.io/random') .then((response) => { return response.json(); }) .then((data) => { hideLoading(); const quote = document.querySelector('.quote'); const author = document.querySelector('.author'); quote.innerHTML = data.content; author.innerHTML = data.author; });
});
Συμπέρασμα
Σε αυτό το άρθρο, μάθαμε πώς να χρησιμοποιούμε JavaScript βανίλια για να δημιουργήσουμε ένα κινούμενο σχέδιο φόρτωσης και να το εμφανίσουμε κατάλληλα. Εξετάσαμε διάφορες προσεγγίσεις για να το πετύχουμε αυτό και ρίξαμε μια ματιά σε μερικές διαφορετικές περιπτώσεις χρήσης για τη φόρτωση κινούμενων εικόνων. Επιλέξαμε να χρησιμοποιήσουμε τον περιστρεφόμενο κύκλο ως φορτωτή, αλλά μπορείτε να τον αλλάξετε με όποιον τρόπο θέλετε – μη διστάσετε να δημιουργήσετε το δικό σας GIF ή κινούμενο πρόγραμμα φόρτωσης CSS.
- a
- Ενέργειες
- Πρόσθετος
- Όλα
- επιτρέπει
- κατά μήκος της πλευράς
- Άλλος
- api
- εμφανίζομαι
- Εφαρμογή
- εφαρμογές
- πλησιάζω
- προσεγγίσεις
- κατάλληλα
- άρθρο
- προσοχή
- διαθέσιμος
- φόντο
- Αρχή
- είναι
- παρακάτω
- ΚΑΛΎΤΕΡΟΣ
- Μαύρη
- Αποκλεισμός
- χτίζω
- ενσωματωμένο
- Μπορεί να πάρει
- περίπτωση
- αλλαγή
- Επιλέξτε
- Κύκλος
- τάξη
- κωδικός
- Κοινός
- επικοινωνία
- Δοχείο
- περιεχόμενο
- έλεγχος
- Ζευγάρι
- κάλυμμα
- δημιουργία
- δημιουργήθηκε
- Δημιουργικός
- Τη στιγμή
- ημερομηνία
- ανάπτυξη
- DID
- διαφορετικές
- εξαφανίζομαι
- Display
- dropbox
- στοιχεία
- Συμβάν
- ακριβώς
- εμπειρία
- Τελικά
- Όνομα
- καθορίζεται
- Δωρεάν
- από
- εμπρός
- λειτουργία
- παράγουν
- να πάρει
- μετάβαση
- καθοδηγήσει
- λαβή
- βοήθεια
- βοηθά
- εδώ
- Κρύβω
- κατέχει
- Σπίτι
- Πως
- Πώς να
- HTTPS
- ICON
- ιδεών
- εφαρμογή
- σημαντικό
- βελτίωση
- περιλαμβάνουν
- Συμπεριλαμβανομένου
- συμπερίληψη
- IT
- το JavaScript
- ξεκινήσει
- στρώμα
- μάθει
- Εισηγμένες
- ζω
- φορτίο
- φόρτωση
- ματιά
- μεγάλες
- μέθοδοι
- ενδέχεται να
- πλέον
- πολυάριθμες
- Επιλογή
- πρωτότυπο
- ΑΛΛΑ
- δική
- People
- Σημείο
- παρόν
- σχέδιο
- περιουσία
- σκοπός
- RE
- έλαβε
- αφαίρεση
- εκπροσωπώ
- απαιτούν
- απάντησης
- ίδιο
- Οθόνη
- τον καθορισμό
- δείχνουν
- παρόμοιες
- κατάσταση
- So
- στέρεο
- μερικοί
- κάτι
- δήλωσε
- Ακόμη
- στυλ
- επιτυχής
- Επιτυχώς
- Η
- πράγμα
- ώρα
- κορυφή
- διαφανής
- ενεργοποιήθηκε
- τύποι
- καταλαβαίνω
- us
- χρήση
- περιπτώσεις χρήσης
- Χρήστες
- διάφορα
- τρόπους
- ιστός
- εφαρμογές ιστού
- Ιστοσελίδα : www.example.gr
- ιστοσελίδες
- Τι
- Τι είναι
- ενώ
- Εργασία
- θα
- Σας