Le immagini cosmiche sono usate su molti siti web come immagine di sfondo. Quelle foto sono indubbiamente belle, ma in fin dei conti sono immagini che danno poca vivacità. Con jQuery, possiamo portare trenta vite a un'immagine ancora cosmica aggiungendo un po 'di polvere spaziale (particelle) che volano come lucciole. In questo tutorial, vedremo come implementare questo effetto in 30 minuti. Impareremo anche un po 'di tecniche Javascript orientate agli oggetti.
Osserveremo questo sfondo cosmico per un periodo piuttosto lungo. Per rendere i nostri occhi più confortevoli, un'immagine scura e semplice viene utilizzata come sfondo in questo tutorial. Sentiti libero di usare più immagini colorate nei tuoi progetti.
Per rendere questo effetto più realistico, abbiamo quattro modelli di particelle in questo tutorial. Sono immagini minuscole con dimensioni e aspetto diversi. Guarda la figura sotto per maggiori dettagli:
A differenza della maggior parte dei tutorial, è lo sfondo di una pagina web su cui ci concentreremo oggi, il che rende l'HTML abbastanza semplice:
L'effetto lucciola
Ora diamo un'occhiata più da vicino alla vita di una particella. Ogni particella può differire in aspetto. E si muovono a velocità e direzioni diverse. Ma tutti seguono lo stesso insieme di regole che possono essere descritte come una sequenza di azioni:
Ogni particella segue esattamente questi otto passaggi nel corso della sua vita. E i fattori casuali, come la posizione e la velocità, fanno si che ogni particella si comporti in un modo unico. Questo è un caso perfetto per implementare alcune tecniche di programmazione orientate agli oggetti. Includiamo questi otto passaggi in una "classe" che verrà creata più volte per creare più istanze della stessa logica. Ogni istanza (particella) viene eseguita in una corsia separata e mantiene la propria velocità e direzione.
È importante notare che non ci sono classi in JavaScript. Le funzioni possono essere utilizzate per simulare in qualche modo le classi, ma in generale JavaScript è basato su prototipi piuttosto che su classi. Tutto è un oggetto. Per ulteriori informazioni su come definire e creare un'istanza di una 'classe' JavaScript, si prega di consultare questi articoli.
Proprio in questo senso, una "classe" viene definita e quindi istanziata 50 volte con il seguente codice.
function Particle () // 1. Seleziona a caso un modello di particelle. // 2. Crea un DOM per questa particella. // 3. Genera una velocità casuale per questa particella. // 4. Genera la posizione iniziale (Punto X e Punto Y) per questa particella. // 5. Mostra la particella nella posizione generata in 4. // 6. Genera un'altra posizione (Punto X e Punto Y) a cui si muove la particella. // 7. Animare il movimento delle particelle nella posizione generata in 6. // 8. Ripeti 6 e 7 una volta terminata l'animazione menzionata in 7. ; function randomInt (max) // Genera un numero intero casuale (0 <= randomInt < max) return Math.floor(Math.random() * max); $(function() var total = 50; var particles = []; for (i = 0; i < total; i++) particles[i] = new Particle(); );
In questa sezione definiremo proprietà e metodi per la classe Particle. E vedremo come scegliere a caso un modello di particelle.
Possiamo usare l 'Questo'parola chiave per definire le proprietà per una' classe '. Quando si tratta di definire metodi, l 'prototipo'proprietà è la strada da percorrere. Guarda il codice qui sotto e daremo alcune spiegazioni.
function Particle () this.path = 'images /'; this.images = ['particle1.png', 'particle2.png', 'particle3.png', 'particle4.png']; // Scegli a caso un modello di particella this.image = this.images [randomInt (this.images.length)]; this.file = this.path + this.image; // Crea un DOM particella this.element = document.createElement ('img'); // Una sequenza di azioni per prendere questo.speed (). NewPoint (). Display (). NewPoint (). Fly (); ; // Genera una velocità casuale Particle.prototype.speed = function () ; // Genera una posizione casuale Particle.prototype.newPoint = function () ; // Visualizza la particella Particle.prototype.display = function () ; // Animate Particle Movements Particle.prototype.fly = function () ;
In effetti ci sono molti modi diversi per definire proprietà e metodi per una classe Javascript. Ecco un grande articolo su questo argomento.
A questo punto, abbiamo un'idea di come funzioni questo effetto. Da questa sezione, inizieremo a scrivere le funzioni che usiamo per manipolare il movimento di una particella.
Innanzitutto, generiamo una velocità casuale per una particella. La velocità determina la velocità di spostamento di una particella. Se hai familiarità con jQuery, capirai che non possiamo semplicemente passare in velocità reale, diciamo 100 pixel al secondo. In effetti, il parametro usato per descrivere la velocità in jQuery è la durata misurata in millisecondi. Quindi la domanda diventa come generare una ragionevole durata in cui una particella viaggia da un luogo all'altro. Che dire del seguente codice?
// Genera velocità casuale Particle.prototype.speed = function () this.duration = (randomInt (10) + 5) * 1000; restituiscilo; ;
Un insieme casuale di posizione X-Y è molto utile in questo effetto. Può essere usato per determinare:
Ecco il codice di cui abbiamo bisogno per generare un insieme casuale di posizione X-Y.
// Genera una posizione casuale Particle.prototype.newPoint = function () this.pointX = randomInt (window.innerWidth - 100); this.pointY = randomInt (window.innerHeight - 100); restituiscilo; ;
Da qui è possibile recuperare le dimensioni della finestra corrente del browser window.innerWidth e window.innerHeight. Se una particella vola oltre il limite della finestra, le barre di scorrimento verranno visualizzate. Potremmo non volere che ciò accadesse. Quindi limitiamo il movimento delle particelle in un'area che è 100 pixel meno alta e larga della finestra del browser. Il codice sopra dovrebbe essere piuttosto semplice. Dopo che questa funzione è stata eseguita, pointX e pointy le proprietà diventano accessibili. Una volta che la funzione viene eseguita una seconda volta, pointX e pointy sarà rinnovato nel caso di particella.
Nelle sezioni precedenti, un DOM img era già stato creato per una nuova particella. Ora imposteremo alcuni attributi e mostreremo la particella da qualche parte nella finestra del browser. Questo è realizzato con il seguente codice.
// Visualizza la particella Particle.prototype.display = function () $ (this.element) .attr ('src', this.file) .css ('position', 'absolute') .css ('top', this.pointY) .css ('left', this.pointX); $ (Document.body) .Append (this.element); restituiscilo; ;
Infine, siamo arrivati alla parte dell'animazione che potrebbe rivelarsi più semplice di quanto pensassi.
La funzione animata in jQuery ci farà il trucco. Ci vogliono quattro parametri: animato (param, durata, easing, callback). Controlla la documentazione se non hai idea di cosa faccia.
// Animate Particle Movements Particle.prototype.fly = function () var self = this; $ (this.element) .animate ("top": this.pointY, "left": this.pointX,, this.duration, 'linear', function () self.speed (). newPoint (). volare(); ); ;
Quello che fa il codice sopra è abbastanza semplice:
Così la volare() la funzione si chiama ripetutamente. Con questa funzione ricorsiva, l'animazione continua all'infinito. Ormai, siamo in grado di scrivere l'intera storia della vita di una particella. Ricorda ancora la seguente catena?
. This.speed () Newpoint () display () Newpoint () vola ()...;
Rivediamo ciò che fa:
Se questi passi ti sembrano sciocchezze ... Beh, guarda ancora questa figura. Dovresti essere in grado di codificare ogni singolo passaggio ora. E dovresti sapere come organizzare tutte le cose in una struttura orientata agli oggetti. Finalmente l'effetto lucciola è completo.
Ora tutti dovrebbero essere in grado di implementare questo effetto nei propri progetti. Spero che tu abbia una migliore comprensione del Javascript orientato agli oggetti.
La cosa numero uno che adoro di questo effetto è che cambiando le immagini di sfondo e di particelle, è possibile produrre un aspetto e una sensazione completamente diversi. Se vuoi, puoi avere aerei o superman che volano sulla tua pagina web. La tua immaginazione è il limite.
Questo è tutto per questo tutorial. Spero ti sia piaciuto. Grazie per aver letto!