Kosmische Bilder werden auf vielen Websites als Hintergrundbild verwendet. Diese Bilder sind zweifellos schön, aber immerhin sind es Standbilder, die wenig Lebhaftigkeit vermitteln. Mit jQuery können wir einem noch kosmischen Bild dreißig Leben verleihen, indem wir Weltraumstaub (Partikel) hinzufügen, die wie Glühwürmchen fliegen. In diesem Tutorial erfahren Sie, wie Sie diesen Effekt in 30 Minuten implementieren können. Wir lernen auch ein wenig objektorientierte Javascript-Techniken.
Wir werden diesen kosmischen Hintergrund ziemlich lange betrachten. Um unsere Augen angenehmer zu gestalten, wird in diesem Tutorial ein dunkles und einfaches Bild als Hintergrund verwendet. Fühlen Sie sich frei, buntere Bilder in Ihren eigenen Projekten zu verwenden.
Damit dieser Effekt realistischer wird, haben wir in diesem Tutorial vier Partikelmodelle. Sie sind winzige Bilder mit unterschiedlicher Größe und Aussehen. Sehen Sie sich die Abbildung unten für weitere Details an:
Im Gegensatz zu den meisten Tutorials ist dies der Hintergrund einer Webseite, auf die wir uns heute konzentrieren, was den HTML-Code recht einfach macht:
Der Firefly-Effekt
Lassen Sie uns nun das Leben eines Partikels näher betrachten. Jedes Partikel kann sich im Aussehen unterscheiden. Und sie bewegen sich mit unterschiedlichen Geschwindigkeiten und Richtungen. Sie folgen jedoch allen denselben Regeln, die als Folge von Aktionen beschrieben werden können:
Jedes Partikel folgt während seiner gesamten Lebensdauer genau diesen acht Schritten. Und die zufälligen Faktoren, wie Position und Geschwindigkeit, machen jedes Partikel einzigartig. Dies ist ein idealer Fall, um einige objektorientierte Programmiertechniken zu implementieren. Lassen Sie uns diese acht Schritte in eine "Klasse" einschließen, die viele Male instanziiert wird, um mehrere Instanzen derselben Logik zu erstellen. Jede Instanz (Partikel) verläuft in einer separaten Spur und behält ihre eigene Geschwindigkeit und Richtung bei.
Beachten Sie, dass in JavaScript keine Klassen vorhanden sind. Funktionen können verwendet werden, um Klassen ein wenig zu simulieren, aber im Allgemeinen ist JavaScript eher prototypbasiert als klassenbasiert. Alles ist ein Objekt. Weitere Informationen zum Definieren und Instanziieren einer JavaScript-Klasse finden Sie in den folgenden Artikeln.
In diesem Effekt wird eine 'Klasse' definiert und 50 Mal mit dem folgenden Code instanziiert.
function Particle () // 1. Wählen Sie zufällig ein Partikelmodell aus. // 2. Erstellen Sie ein DOM für dieses Partikel. // 3. Generiere eine zufällige Geschwindigkeit für dieses Partikel. // 4. Generiere die Ausgangsposition (Punkt X und Punkt Y) für dieses Partikel. // 5. Anzeige des Partikels an der in 4. generierten Position. // 6. 6. Generiere eine andere Position (Punkt X und Punkt Y), zu der sich das Partikel bewegt. // 7. Animieren Sie die Bewegung der Partikel an die in 6. erzeugte Position. // 8. Wiederholen Sie die Schritte 6 und 7, wenn die unter 7 genannte Animation beendet ist. ; function randomInt (max) // Generiere eine zufällige ganze Zahl (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 diesem Abschnitt definieren wir Eigenschaften und Methoden für die Partikelklasse. Und wir werden sehen, wie man zufällig ein Partikelmodell auswählt.
Wir können die 'verwendendiese'Schlüsselwort zum Definieren von Eigenschaften für eine' Klasse '. Wenn es um die Definition von Methoden geht,Prototyp'Eigenschaft ist der Weg zu gehen. Schauen Sie sich den Code unten an und wir werden einige Erklärungen geben.
function Particle () this.path = 'images /'; this.images = ['particle1.png','enteilchen2.png ',' teilchen3.png ',' teilchen4.png ']; // Wähle ein Partikelmodell zufällig this.image = this.images [randomInt (this.images.length)]; this.file = this.path + this.image; // Erzeuge ein Particle DOM this.element = document.createElement ('img'); // Eine Folge von Aktionen, um this.speed (). NewPoint (). Display (). NewPoint (). Fly (); ; // Generiere eine Zufallsgeschwindigkeit Particle.prototype.speed = function () ; // Eine zufällige Position generieren Particle.prototype.newPoint = function () ; // Anzeige des Partikels Particle.prototype.display = function () ; // Partikelbewegungen animieren Particle.prototype.fly = function () ;
Tatsächlich gibt es viele verschiedene Möglichkeiten, Eigenschaften und Methoden für eine Javascript-Klasse zu definieren. Hier ist ein großartiger Artikel zu diesem Thema.
Inzwischen haben wir eine Idee, wie dieser Effekt funktioniert. In diesem Abschnitt beginnen wir mit dem Schreiben von Funktionen, mit denen wir die Bewegung eines Partikels manipulieren.
Zuerst erzeugen wir eine zufällige Geschwindigkeit für ein Teilchen. Die Geschwindigkeit bestimmt, wie schnell sich ein Partikel bewegt. Wenn Sie sich mit jQuery auskennen, werden Sie verstehen, dass wir nicht einfach mit echter Geschwindigkeit fahren können, beispielsweise 100 Pixel pro Sekunde. Tatsächlich ist der zur Beschreibung der Geschwindigkeit in jQuery verwendete Parameter die Dauer in Millisekunden. Es stellt sich also die Frage, wie eine vernünftige Dauer erzeugt werden kann, in der ein Partikel von einem Ort zum anderen wandert. Was ist mit dem folgenden Code??
// Zufallsgeschwindigkeit generieren Particle.prototype.speed = function () this.duration = (randomInt (10) + 5) * 1000; kehre das zurück; ;
Ein zufälliger Satz von X-Y-Positionen ist für diesen Effekt sehr nützlich. Es kann verwendet werden, um zu bestimmen:
Hier ist der Code, den wir benötigen, um einen zufälligen Satz von X-Y-Positionen zu generieren.
// Eine zufällige Position generieren Particle.prototype.newPoint = function () this.pointX = randomInt (window.innerWidth - 100); this.pointY = randomInt (window.innerHeight - 100); kehre das zurück; ;
Die Größe des aktuellen Browserfensters kann aus abgerufen werden window.innerWidth und window.innerHeight. Wenn ein Partikel über die Begrenzung des Fensters hinausfliegt, werden Bildlaufleisten angezeigt. Wir möchten vielleicht nicht, dass das passiert. Lassen Sie uns also die Partikelbewegung in einem Bereich einschränken, der 100 Pixel weniger hoch und breit als das Browserfenster ist. Der obige Code sollte ziemlich unkompliziert sein. Nachdem diese Funktion ausgeführt wurde, pointX und pointY Eigenschaften werden zugänglich. Einmal läuft die Funktion ein zweites Mal, pointX und pointY wird in der Instanz von erneuert Partikel.
In vorherigen Abschnitten wurde bereits ein img-DOM für ein neues Partikel erstellt. Jetzt werden wir ein paar Attribute setzen und das Partikel irgendwo im Browserfenster anzeigen. Dies wird mit dem folgenden Code erreicht.
// Anzeige des Partikels 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); kehre das zurück; ;
Schließlich sind wir zu dem Animationsabschnitt gekommen, der möglicherweise einfacher erscheint, als Sie dachten.
Die Animationsfunktion in jQuery erledigt den Trick für uns. Es sind vier Parameter erforderlich: animieren (Params, Dauer, Lockerung, Rückruf). Überprüfen Sie die Dokumentation, wenn Sie keine Ahnung haben, was sie tut.
// Partikelbewegungen animieren Particle.prototype.fly = function () var self = this; $ (this.element) .animate ("top": this.pointY, "left": this.pointX), this.duration, 'linear', function () self.speed (). newPoint (). fliegen(); ); ;
Was der obige Code macht, ist ganz einfach:
Also die fliegen() Funktion ruft sich wiederholt auf. Mit dieser rekursiven Funktion wird die Animation für immer fortgesetzt. Inzwischen können wir die gesamte Geschichte eines Partikels schreiben. Erinnere dich noch an die folgende Kette?
this.speed (). newPoint (). display (). newPoint (). fly ();
Lassen Sie uns überprüfen, was es tut:
Wenn diese Schritte für Sie wie ein Zungenbrecher klingen… Schauen Sie sich diese Figur noch einmal an. Sie sollten jetzt jeden einzelnen Schritt codieren können. Und Sie sollten wissen, wie Sie alles in einer objektorientierten Struktur organisieren. Schließlich ist der Glühwürmcheneffekt abgeschlossen.
Nun sollte jeder in der Lage sein, diesen Effekt in Ihren eigenen Projekten umzusetzen. Hoffentlich haben Sie auch ein besseres Verständnis für objektorientiertes Javascript.
Die wichtigste Sache, die ich an diesem Effekt liebe, ist, dass durch Ändern der Hintergrund- und Partikelbilder ein völlig anderes Aussehen und Gefühl erzeugt werden kann. Wenn Sie möchten, können Sie Flugzeuge oder sogar Supermen auf Ihrer Webseite fliegen lassen. Ihre Vorstellungskraft ist die Grenze.
Das ist alles für dieses Tutorial. Ich hoffe es gefällt dir. Danke fürs Lesen!