Implementación de JavaScript

Aquí está la parte central de nuestra animación en JavaScript. Definiremos la configuración de las partículas y configuraremos el lienzo para dibujarlas.

\\'use strict\\'; // Enables strict mode to enforce stricter parsing and error handling in JavaScript// Configuration object for particle systemconst config = {    particleCount: 100,                  // Total number of particles in the system    particlePropCount: 9,                // Number of properties each particle has    baseTTL: 1,                          // Base time-to-live for each particle (in seconds)    rangeTTL: 2,                         // Range of time-to-live variation (in seconds)    baseSpeed: 0.001,                    // Base speed of particle movement    rangeSpeed: 0.002,                   // Variation in particle speed    circularSpeed: 0.001,                // Speed of particles\\' circular motion    baseRadius: 2,                       // Minimum radius of particles    rangeRadius: 3,                      // Maximum variation in particle radius    baseHue: 220,                        // Base hue (color) of particles    rangeHue: 120,                       // Variation in hue for particle colors    backgroundColor: \\'#111827\\',          // Color of the background    circleRadius: 250,                   // Radius of the circular area in which particles move    glowStrength: 10,                    // Strength of the glow effect around particles    randomnessFactor: 4,                 // Factor to introduce randomness in particle behavior    trailLength: 10.2,                   // Length of the trail left by particles    mouseForce: 2,                       // Increased mouse attraction force to pull particles    mouseRadius: 200                      // Radius within which mouse influence affects particles};// Additional JavaScript code goes here...

En el código anterior, configuramos varias propiedades para nuestras partículas, incluido su recuento, velocidad, radio, color (tono) y el color de fondo del lienzo.

Inicializando partículas

Inicializamos las partículas en un patrón circular y les asignamos propiedades aleatorias:

function initParticles() {    particleProps = new Float32Array(config.particleCount * config.particlePropCount);    const angleIncrement = TAU / config.particleCount;    for (let i = 0; i < config.particleCount; i  ) {        initParticle(i * config.particlePropCount, i * angleIncrement);    }}function initParticle(i, angleOffset) {    const radius = config.baseRadius   rand(config.rangeRadius);    const hue = config.baseHue   rand(config.rangeHue);    particleProps.set([        Math.cos(angleOffset) * config.circleRadius   canvas.a.width / 2,        Math.sin(angleOffset) * config.circleRadius   canvas.a.height / 2,        0, 0, 0,        config.baseTTL   rand(config.rangeTTL),        config.baseSpeed   rand(config.rangeSpeed),        radius, hue    ], i);}

Partículas de dibujo

La lógica central de la animación se maneja en la función de dibujo, donde actualizamos y renderizamos las partículas continuamente:

function draw() {    tick  ;    ctx.a.clearRect(0, 0, canvas.a.width, canvas.a.height);    ctx.b.fillStyle = config.backgroundColor;    ctx.b.fillRect(0, 0, canvas.a.width, canvas.a.height);    drawParticles();    renderGlow();    renderToScreen();    requestAnimationFrame(draw);}

Estilo CSS

Para garantizar que nuestra animación se vea pulida, usaremos algo de CSS para diseñar el cuerpo y el lienzo:

body {    display: flex;    justify-content: center;    align-items: center;    height: 100vh; /* Full viewport height */    margin: 0;    background: #000; /* Optional: background color */}.content--canvas {    position: absolute;     top: 0;    z-index: 1;    width: 100vw; /* Full viewport width */    height: 100vh; /* Full viewport height */}canvas {    display: block; }

¡Siéntete libre de experimentar con las propiedades de las partículas en el objeto de configuración para crear tu animación única! Vea la demostración en vivo en CodePen y comparta sus ideas o mejoras en los comentarios a continuación.

","image":"http://www.luping.net/uploads/20241006/17282059316702546b4a6a4.jpg","datePublished":"2024-11-08T19:41:54+08:00","dateModified":"2024-11-08T19:41:54+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Creando una fascinante animación de partículas con JavaScript

Creando una fascinante animación de partículas con JavaScript

Publicado el 2024-11-08
Navegar:344

Creating a Mesmerizing Particle Animation with JavaScript

Esto es lo que vamos a crear, mueve el mouse sobre las partículas para ver el efecto.

En este artículo, te guiaré a través del proceso de creación de una animación de partículas cautivadora usando JavaScript y HTML5 Canvas. Este proyecto no sólo mejora la estética de su página web, sino que también constituye una oportunidad fantástica para profundizar en algunos conceptos de codificación interesantes. ¡Vamos a sumergirnos!

Descripción general del proyecto

La animación presenta partículas que se mueven en un patrón circular alrededor de un punto central. Cuando el mouse pasa sobre el lienzo, las partículas son atraídas por el cursor, creando un efecto dinámico y atractivo. Utilizaremos la biblioteca Simplex Noise para introducir algo de aleatoriedad y hacer que el movimiento de las partículas sea más orgánico y visualmente atractivo.

Tecnologías utilizadas

  • HTML5 Canvas: Para renderizar la animación.
  • JavaScript: Para gestionar la lógica de la animación.
  • CSS: Para estilo y diseño.
  • Ruido simplex: Para agregar aleatoriedad al movimiento de las partículas.

Configurar el entorno

Para comenzar, cree un archivo HTML e incluya la biblioteca Simplex Noise usando la siguiente etiqueta de secuencia de comandos:


Implementación de JavaScript

Aquí está la parte central de nuestra animación en JavaScript. Definiremos la configuración de las partículas y configuraremos el lienzo para dibujarlas.

'use strict'; // Enables strict mode to enforce stricter parsing and error handling in JavaScript

// Configuration object for particle system
const config = {
    particleCount: 100,                  // Total number of particles in the system
    particlePropCount: 9,                // Number of properties each particle has
    baseTTL: 1,                          // Base time-to-live for each particle (in seconds)
    rangeTTL: 2,                         // Range of time-to-live variation (in seconds)
    baseSpeed: 0.001,                    // Base speed of particle movement
    rangeSpeed: 0.002,                   // Variation in particle speed
    circularSpeed: 0.001,                // Speed of particles' circular motion
    baseRadius: 2,                       // Minimum radius of particles
    rangeRadius: 3,                      // Maximum variation in particle radius
    baseHue: 220,                        // Base hue (color) of particles
    rangeHue: 120,                       // Variation in hue for particle colors
    backgroundColor: '#111827',          // Color of the background
    circleRadius: 250,                   // Radius of the circular area in which particles move
    glowStrength: 10,                    // Strength of the glow effect around particles
    randomnessFactor: 4,                 // Factor to introduce randomness in particle behavior
    trailLength: 10.2,                   // Length of the trail left by particles
    mouseForce: 2,                       // Increased mouse attraction force to pull particles
    mouseRadius: 200                      // Radius within which mouse influence affects particles
};

// Additional JavaScript code goes here...

En el código anterior, configuramos varias propiedades para nuestras partículas, incluido su recuento, velocidad, radio, color (tono) y el color de fondo del lienzo.

Inicializando partículas

Inicializamos las partículas en un patrón circular y les asignamos propiedades aleatorias:

function initParticles() {
    particleProps = new Float32Array(config.particleCount * config.particlePropCount);
    const angleIncrement = TAU / config.particleCount;

    for (let i = 0; i 



Partículas de dibujo

La lógica central de la animación se maneja en la función de dibujo, donde actualizamos y renderizamos las partículas continuamente:

function draw() {
    tick  ;
    ctx.a.clearRect(0, 0, canvas.a.width, canvas.a.height);
    ctx.b.fillStyle = config.backgroundColor;
    ctx.b.fillRect(0, 0, canvas.a.width, canvas.a.height);

    drawParticles();
    renderGlow();
    renderToScreen();
    requestAnimationFrame(draw);
}



Estilo CSS

Para garantizar que nuestra animación se vea pulida, usaremos algo de CSS para diseñar el cuerpo y el lienzo:

body {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh; /* Full viewport height */
    margin: 0;
    background: #000; /* Optional: background color */
}

.content--canvas {
    position: absolute; 
    top: 0;
    z-index: 1;
    width: 100vw; /* Full viewport width */
    height: 100vh; /* Full viewport height */
}

canvas {
    display: block; 
}

¡Siéntete libre de experimentar con las propiedades de las partículas en el objeto de configuración para crear tu animación única! Vea la demostración en vivo en CodePen y comparta sus ideas o mejoras en los comentarios a continuación.

Declaración de liberación Este artículo se reproduce en: https://dev.to/sohrabzia/creating-a-mesmerizing-particle-animation-with-javascript-e35?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3