Aqui está a parte central da nossa animação em JavaScript. Definiremos a configuração das partículas e montaremos a tela para desenhá-las.
\\'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...
No código acima, configuramos várias propriedades para nossas partículas, incluindo contagem, velocidade, raio, cor (matiz) e a cor de fundo da tela.
Inicializamos as partículas em um padrão circular e atribuímos a elas propriedades aleatórias:
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);}
A lógica principal da animação é tratada na função draw, onde atualizamos e renderizamos as 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);}
Para garantir que nossa animação tenha uma aparência elegante, usaremos CSS para estilizar o corpo e a tela:
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; }
Sinta-se à vontade para experimentar as propriedades das partículas no objeto de configuração para criar sua animação exclusiva! Confira a demonstração ao vivo no CodePen e compartilhe suas idéias ou melhorias nos comentários abaixo.
","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"}}Isso é o que vamos criar, passe o mouse sobre as partículas para ver o efeito.
Neste artigo, orientarei você no processo de criação de uma animação de partículas cativante usando JavaScript e tela HTML5. Este projeto não apenas melhora a estética da sua página web, mas também serve como uma oportunidade fantástica para se aprofundar em alguns conceitos interessantes de codificação. Vamos mergulhar!
A animação apresenta partículas que se movem em um padrão circular em torno de um ponto central. Quando o mouse passa sobre a tela, as partículas são atraídas pelo cursor, criando um efeito dinâmico e envolvente. Utilizaremos a biblioteca Simplex Noise para introduzir alguma aleatoriedade e tornar o movimento das partículas mais orgânico e visualmente atraente.
Para começar, crie um arquivo HTML e inclua a biblioteca Simplex Noise usando a seguinte tag de script:
Aqui está a parte central da nossa animação em JavaScript. Definiremos a configuração das partículas e montaremos a tela para desenhá-las.
'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...
No código acima, configuramos várias propriedades para nossas partículas, incluindo contagem, velocidade, raio, cor (matiz) e a cor de fundo da tela.
Inicializamos as partículas em um padrão circular e atribuímos a elas propriedades aleatórias:
function initParticles() { particleProps = new Float32Array(config.particleCount * config.particlePropCount); const angleIncrement = TAU / config.particleCount; for (let i = 0; iDesenhando Partículas
A lógica principal da animação é tratada na função draw, onde atualizamos e renderizamos as 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 garantir que nossa animação tenha uma aparência elegante, usaremos CSS para estilizar o corpo e a tela:
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; }Sinta-se à vontade para experimentar as propriedades das partículas no objeto de configuração para criar sua animação exclusiva! Confira a demonstração ao vivo no CodePen e compartilhe suas idéias ou melhorias nos comentários abaixo.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3