Les images cosmiques sont utilisées sur de nombreux sites Web comme image de fond. Ces images sont sans aucun doute belles, mais après tout ce sont des images fixes qui offrent peu de vivacité. Avec jQuery, nous pouvons redonner vie à une image cosmique immobile en ajoutant des particules de poussière dans l’espace volant comme des lucioles. Dans ce tutoriel, nous verrons comment implémenter cet effet en 30 minutes. Nous allons aussi apprendre un peu de techniques Javascript orientées objet.
Nous allons regarder ce fond cosmique pendant assez longtemps. Pour rendre nos yeux plus confortables, une image sombre et simple est utilisée comme arrière-plan dans ce tutoriel. N'hésitez pas à utiliser des images plus colorées dans vos propres projets.
Pour rendre cet effet plus réaliste, nous avons quatre modèles de particules dans ce didacticiel. Ce sont de minuscules images de tailles et de styles différents. Regardez la figure ci-dessous pour plus de détails:
Contrairement à la plupart des tutoriels, c'est l'arrière-plan d'une page Web sur laquelle nous allons nous concentrer aujourd'hui, ce qui rend le code HTML très simple:
L'effet luciole
Regardons maintenant de plus près la vie d'une particule. Chaque particule peut différer par son apparence. Et ils se déplacent à des vitesses et des directions différentes. Mais ils suivent tous le même ensemble de règles qui peuvent être décrites comme une séquence d'actions:
Chaque particule suit exactement ces huit étapes tout au long de sa vie. Et les facteurs aléatoires, tels que la position et la vitesse, font que chaque particule se comporte de manière unique. C'est un cas parfait pour mettre en œuvre certaines techniques de programmation orientée objet. Enveloppons ces huit étapes dans une "classe" qui sera instanciée plusieurs fois pour créer plusieurs instances de la même logique. Chaque instance (particule) se trouve dans une voie séparée et conserve sa propre vitesse et sa propre direction.
Il est important de noter qu'il n'y a pas de classes en JavaScript. Les fonctions peuvent être utilisées pour simuler quelque peu les classes, mais en général, JavaScript est basé sur un prototype plutôt que sur une classe. Tout est un objet. Pour plus d'informations sur la définition et l'instanciation d'une "classe" JavaScript, consultez ces articles..
Dans cet effet même, une 'classe' est définie puis instanciée 50 fois avec le code suivant.
function Particle () // 1. Choisit un modèle de particule au hasard. // 2. Créez un DOM pour cette particule. // 3. Génère une vitesse aléatoire pour cette particule. // 4. Génère la position initiale (Point X et Point Y) pour cette particule. // 5. Affichez la particule à la position générée dans 4. // 6. Générez une autre position (Point X et Point Y) vers laquelle la particule se déplace. // 7. Animez le mouvement de la particule à la position générée en 6. // 8. Répétez les étapes 6 et 7 une fois l'animation mentionnée en 7 terminée. ; function randomInt (max) // Génère un entier aléatoire (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(); );
Dans cette section, nous allons définir les propriétés et les méthodes de la classe Particle. Et nous verrons comment choisir au hasard un modèle de particules.
Nous pouvons utiliser le 'ce'mot-clé pour définir les propriétés d'une' classe '. Quand il s’agit de définir des méthodes, le 'prototypeLa propriété est la voie à suivre. Regardez le code ci-dessous et nous vous donnerons quelques explications.
fonction Particle () this.path = 'images /'; this.images = ['particule1.png', 'particule2.png', 'particule3.png', 'particule4.png']; // Choisissez au hasard un modèle de particules this.image = this.images [randomInt (this.images.length)]; this.file = this.path + this.image; // Créer un DOM de particule this.element = document.createElement ('img'); // Une séquence d'actions à effectuer this.speed (). NewPoint (). Display (). NewPoint (). Fly (); ; // Génère une particule à vitesse aléatoire.prototype.speed = function () ; // Génère une particule de position aléatoire.prototype.newPoint = function () ; // Affiche la particule Particle.prototype.display = function () ; // Animation des mouvements de particules Particle.prototype.fly = function () ;
En fait, il existe différentes manières de définir les propriétés et les méthodes d'une classe Javascript. Voici un excellent article sur ce sujet.
Nous avons maintenant une idée du fonctionnement de cet effet. À partir de cette section, nous allons commencer à écrire les fonctions que nous utilisons pour manipuler le mouvement d'une particule.
Tout d'abord, générons une vitesse aléatoire pour une particule. La vitesse détermine la vitesse de déplacement d'une particule. Si vous connaissez jQuery, vous comprendrez que nous ne pouvons pas passer à la vitesse réelle, disons 100 pixels par seconde. En fait, le paramètre utilisé pour décrire la vitesse dans jQuery est la durée mesurée en millisecondes. La question est donc de savoir comment générer une durée raisonnable pendant laquelle une particule se déplace d’un endroit à un autre. Qu'en est-il du code suivant?
// Génération de particules aléatoires à vitesse aléatoire.prototype.speed = fonction () this.duration = (randomInt (10) + 5) * 1000; retournez ceci; ;
Un ensemble aléatoire de positions X-Y est très utile dans cet effet. Il peut être utilisé pour déterminer:
Voici le code dont nous avons besoin pour générer un ensemble aléatoire de positions X-Y.
// Génère une particule de position aléatoire.prototype.newPoint = function () this.pointX = randomInt (window.innerWidth - 100); this.pointY = randomInt (window.innerHeight - 100); retournez ceci; ;
La taille de la fenêtre actuelle du navigateur peut être extraite de window.innerWidth et window.innerHeight. Si une particule dépasse la limite de la fenêtre, des barres de défilement apparaissent. Nous ne voulons peut-être pas que cela se produise. Limitons donc le mouvement des particules dans une zone moins large et plus haute de 100 pixels que la fenêtre du navigateur. Le code ci-dessus devrait être assez simple. Après que cette fonction soit exécutée, pointX et pointY les propriétés deviennent accessibles. Une fois que la fonction s'exécute une seconde fois, pointX et pointY sera renouvelé dans le cas de Particule.
Dans les sections précédentes, un DOM img avait déjà été créé pour une nouvelle particule. Nous allons maintenant définir quelques attributs et afficher la particule quelque part dans la fenêtre du navigateur. Ceci est accompli avec le code suivant.
// Affiche la particule 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); retournez ceci; ;
Enfin, nous arrivons à la partie animation qui peut paraître plus simple que vous ne le pensiez.
La fonction animate dans jQuery fera l'affaire pour nous. Il faut quatre paramètres: animate (paramètres, durée, atténuation, rappel). Consultez la documentation si vous n'avez aucune idée de ce qu'elle fait.
// Animation des mouvements de particules Particle.prototype.fly = function () var self = this; $ (this.element) .animate ("top": this.pointY, "left": this.pointX,, this.duration, 'linear', function () self.speed (). newPoint (). voler(); ); ;
Ce que fait le code ci-dessus est assez simple:
Alors le voler() fonction s’appelle de manière répétée. Avec cette fonction récursive, l'animation continue indéfiniment. A présent, nous sommes en mesure d'écrire toute l'histoire de la vie d'une particule. Souviens-toi encore de la chaîne suivante?
this.speed (). newPoint (). display (). newPoint (). fly ();
Passons en revue ce qu'il fait:
Si ces étapes vous ressemblent à une vrille… Eh bien, regardez encore cette figure. Vous devriez être capable de coder chaque étape maintenant. Et vous devriez savoir comment organiser tout cela dans une structure orientée objet. Enfin l'effet luciole est complet.
Maintenant, tout le monde devrait pouvoir appliquer cet effet dans ses propres projets. J'espère que vous avez également une meilleure compréhension de Javascript orienté objet.
La première chose que j'aime dans cet effet est qu'en modifiant les images d'arrière-plan et de particules, vous pouvez obtenir une apparence et une sensation complètement différentes. Vous pouvez avoir des avions ou même des surhommes voler sur votre page Web si vous le souhaitez. La limite, c'est votre imagination.
C'est tout pour ce tutoriel. Je espère que vous l'apprécierez. Merci d'avoir lu!