Las imágenes cósmicas se utilizan en muchos sitios web como imagen de fondo. Esas imágenes son sin duda hermosas, pero después de todo son imágenes que brindan poca vivacidad. Con jQuery, podemos traer una imagen aún cósmica treinta vidas agregando algo de polvo espacial (partículas) volando como luciérnagas. En este tutorial, veremos cómo implementar este efecto en 30 minutos. También aprenderemos un poco de técnicas de Javascript orientadas a objetos..
Estaremos contemplando este fondo cósmico durante bastante tiempo. Para hacer que nuestros ojos estén más cómodos, en este tutorial se utiliza una imagen oscura y simple como fondo. Siéntete libre de usar imágenes más coloridas en tus propios proyectos..
Para hacer que este efecto parezca más realista, tenemos cuatro modelos de partículas en este tutorial. Son pequeñas imágenes con diferente tamaño y apariencia. Mira la figura de abajo para más detalles:
A diferencia de la mayoría de los tutoriales, es el fondo de una página web en la que nos centraremos hoy, lo que hace que el HTML sea bastante simple:
El efecto de la luciérnaga
Ahora echemos un vistazo más de cerca a la vida de una partícula. Cada partícula puede diferir en apariencia. Y se mueven a diferentes velocidades y direcciones. Pero todas siguen el mismo conjunto de reglas que se pueden describir como una secuencia de acciones:
Cada partícula sigue exactamente estos ocho pasos a lo largo de su vida. Y los factores aleatorios, como la posición y la velocidad, hacen que cada partícula se comporte de una manera única. Este es un caso perfecto para implementar algunas técnicas de programación orientada a objetos. Envolvamos estos ocho pasos en una 'clase' que se instanciará muchas veces para crear múltiples instancias de la misma lógica. Cada instancia (partícula) se ejecuta en un carril separado y mantiene su propia velocidad y dirección.
Es importante tener en cuenta que no hay clases en JavaScript. Las funciones se pueden usar para simular clases, pero en general JavaScript está basado en prototipos en lugar de en clases. Todo es un objeto. Para obtener más información sobre cómo definir y crear una instancia de una "clase" de JavaScript, consulte estos artículos.
En este mismo efecto, se define una 'clase' y luego se crea una instancia 50 veces con el siguiente código.
function Particle () // 1. Escoge aleatoriamente un modelo de partículas. // 2. Crea un DOM para esta partícula. // 3. Genera una velocidad aleatoria para esta partícula. // 4. Genere la posición inicial (Punto X y Punto Y) para esta partícula. // 5. Visualice la partícula en la posición generada en 4. // 6. Genere otra posición (Punto X y Punto Y) a la que se mueve la partícula. // 7. Anime el movimiento de partículas a la posición generada en 6. // 8. Repita 6 y 7 una vez que la animación mencionada en 7 termine. ; function randomInt (max) // Genera un entero aleatorio (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(); );
En esta sección, definiremos propiedades y métodos para la clase Particle. Y veremos cómo elegir aleatoriamente un modelo de partículas..
Podemos usar elesta'palabra clave para definir propiedades para una' clase '. Cuando se trata de definir métodos, el 'prototipo'La propiedad es el camino a seguir. Mire el código de abajo y le daremos algunas explicaciones..
function Particle () this.path = 'images /'; this.images = ['particle1.png', 'particle2.png', 'particle3.png', 'particle4.png']; // Escoge aleatoriamente un modelo de partícula this.image = this.images [randomInt (this.images.length)]; this.file = this.path + this.image; // Crear un DOM de partículas this.element = document.createElement ('img'); // Una secuencia de acciones para tomar this.speed (). NewPoint (). Display (). NewPoint (). Fly (); ; // Generar una velocidad aleatoria Particle.prototype.speed = function () ; // Generar una posición aleatoria Particle.prototype.newPoint = function () ; // Mostrar la Partícula Particle.prototype.display = function () ; // Animar movimientos de partículas Particle.prototype.fly = function () ;
De hecho, hay muchas formas diferentes de definir propiedades y métodos para una clase de Javascript. Aquí hay un gran artículo sobre este tema.
Por ahora, tenemos una idea de cómo funciona este efecto. A partir de esta sección, comenzaremos a escribir las funciones que usamos para manipular el movimiento de una partícula..
Primero, generemos una velocidad aleatoria para una partícula. La velocidad determina qué tan rápido viaja una partícula. Si está familiarizado con jQuery, comprenderá que no podemos simplemente pasar a velocidad real, digamos 100 píxeles por segundo. De hecho, el parámetro usado para describir la velocidad en jQuery es la duración medida en milisegundos. Entonces, la pregunta es cómo generar una duración razonable en la cual una partícula viaja de un lugar a otro. ¿Qué pasa con el siguiente código??
// Generar velocidad aleatoria Particle.prototype.speed = function () this.duration = (randomInt (10) + 5) * 1000; devuelve esto ;
Un conjunto aleatorio de posición X-Y es muy útil en este efecto. Se puede utilizar para determinar:
Aquí está el código que necesitamos para generar un conjunto aleatorio de posición X-Y.
// Generar una posición aleatoria Particle.prototype.newPoint = function () this.pointX = randomInt (window.innerWidth - 100); this.pointY = randomInt (window.innerHeight - 100); devuelve esto ;
El tamaño de la ventana actual del navegador se puede recuperar desde window.innerWidth y window.innerHeight. Si una partícula vuela más allá del límite de la ventana, aparecerán barras de desplazamiento. Puede que no queramos que eso suceda. Así que confinemos el movimiento de partículas en un área que es 100 píxeles menos alta y ancha que la ventana del navegador. El código anterior debe ser bastante sencillo. Una vez ejecutada esta función., puntoX y punto Y Las propiedades se vuelven accesibles. Una vez que la función se ejecuta una segunda vez, puntoX y punto Y será renovado en el caso de Partícula.
En las secciones anteriores, ya se creó un img DOM para una nueva partícula. Ahora vamos a establecer algunos atributos y mostrar la partícula en algún lugar de la ventana del navegador. Esto se logra con el siguiente código.
// Mostrar la Partícula 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); devuelve esto ;
Finalmente, hemos llegado a la parte de animación que puede aparecer más simple de lo que pensabas..
La función animada en jQuery hará el truco por nosotros. Lleva cuatro parámetros: animar (parámetros, duración, suavizado, devolución de llamada). Revisa la documentación si no tienes idea de lo que hace.
// Animar movimientos de partículas Particle.prototype.fly = function () var self = this; $ (this.element) .animate ("top": this.pointY, "left": this.pointX,, this.duration, 'linear', function () self.speed (). newPoint (). volar(); ); ;
Lo que hace el código anterior es bastante simple:
Entonces el volar() La función se llama a sí misma repetidamente. Con esta función recursiva, la animación sigue y sigue para siempre. Por ahora, podemos escribir la historia completa de la vida de una partícula. Todavía recuerdo la siguiente cadena?
this.speed (). newPoint (). display (). newPoint (). fly ();
Repasemos lo que hace:
Si estos pasos te suenan como un trabalenguas ... Bueno, mira esta figura de nuevo. Ahora deberías poder codificar cada paso. Y debes saber cómo organizar todo el material en una estructura orientada a objetos. Finalmente el efecto luciérnaga es completo..
Ahora todos deberían poder implementar este efecto en sus propios proyectos. Esperemos que tenga una mejor comprensión de Javascript orientado a objetos también.
Lo que más me gusta de este efecto es que al cambiar las imágenes de fondo y de partículas, puede producir una apariencia y sensación completamente diferentes. Puede tener aviones o incluso superhombres volando en su página web si lo desea. Tu imaginación es el limite.
Eso es todo para este tutorial. Espero que lo disfrutes. Gracias por leer!