Voici la partie centrale de notre animation en JavaScript. Nous définirons la configuration des particules et configurerons le canevas pour les dessiner.
\\'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...
Dans le code ci-dessus, nous configurons diverses propriétés de nos particules, notamment leur nombre, leur vitesse, leur rayon, leur couleur (teinte) et la couleur d'arrière-plan du canevas.
Nous initialisons les particules selon un motif circulaire et leur attribuons des propriétés aléatoires :
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);}
La logique d'animation de base est gérée dans la fonction de dessin, où nous mettons à jour et restituons les particules en continu :
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);}
Pour garantir que notre animation soit soignée, nous utiliserons du CSS pour styliser le corps et le canevas :
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; }
N'hésitez pas à expérimenter les propriétés des particules dans l'objet de configuration pour créer votre animation unique ! Découvrez la démo en direct sur CodePen et partagez vos réflexions ou améliorations dans les commentaires ci-dessous.
","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"}}C'est ce que nous allons créer, déplacez votre souris sur les particules pour voir l'effet.
Dans cet article, je vais vous guider à travers le processus de création d'une animation de particules captivante à l'aide d'un canevas JavaScript et HTML5. Ce projet améliore non seulement l'esthétique de votre page Web, mais constitue également une fantastique opportunité d'approfondir certains concepts de codage intéressants. Allons-y !
L'animation présente des particules qui se déplacent selon un motif circulaire autour d'un point central. Lorsque la souris survole la toile, les particules sont attirées vers le curseur, créant un effet dynamique et engageant. Nous utiliserons la bibliothèque Simplex Noise pour introduire un peu d'aléatoire et rendre le mouvement des particules plus organique et visuellement attrayant.
Pour commencer, créez un fichier HTML et incluez la bibliothèque Simplex Noise à l'aide de la balise de script suivante :
Voici la partie centrale de notre animation en JavaScript. Nous définirons la configuration des particules et configurerons le canevas pour les dessiner.
'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...
Dans le code ci-dessus, nous configurons diverses propriétés de nos particules, notamment leur nombre, leur vitesse, leur rayon, leur couleur (teinte) et la couleur d'arrière-plan du canevas.
Nous initialisons les particules selon un motif circulaire et leur attribuons des propriétés aléatoires :
function initParticles() { particleProps = new Float32Array(config.particleCount * config.particlePropCount); const angleIncrement = TAU / config.particleCount; for (let i = 0; iDessiner des particules
La logique d'animation de base est gérée dans la fonction de dessin, où nous mettons à jour et restituons les particules en continu :
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); }Style CSS
Pour garantir que notre animation soit soignée, nous utiliserons du CSS pour styliser le corps et le canevas :
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; }N'hésitez pas à expérimenter les propriétés des particules dans l'objet de configuration pour créer votre animation unique ! Découvrez la démo en direct sur CodePen et partagez vos réflexions ou améliorations dans les commentaires ci-dessous.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3