Tết tết tết đến rồi! Để trang trí cho website yêu của chúng ta, các bạn chỉ cần làm 1 vài thao tác nhỏ sau. Cách này áp dụng trên tất cả website như WordPress, Joomla, NukeViet hoặc Blogspot

1. Hiệu ứng pháo hoa

Phần HTML, chèn đâu cũng được

<canvas id="fireworksCanvas"></canvas>

Phần Javascript, nên chèn ở phẩn FOOTER, bỏ vào thẻ <script>..</script>

    const canvas = document.getElementById('fireworksCanvas');
    const ctx = canvas.getContext('2d');
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;

    // Particle class to represent each particle in the firework
    class Particle {
      constructor(x, y, color, velocityX, velocityY, size, lifetime) {
        this.x = x;
        this.y = y;
        this.color = color;
        this.velocityX = velocityX;
        this.velocityY = velocityY;
        this.size = size;
        this.lifetime = lifetime;
      }

      // Update particle position and decrease lifetime
      update() {
        this.x += this.velocityX;
        this.y += this.velocityY;
        this.lifetime--;
        this.velocityY += 0.05; // gravity effect
      }

      // Draw the particle
      draw() {
        ctx.beginPath();
        ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);
        ctx.fillStyle = this.color;
        ctx.fill();
      }
    }

    // Firework class to create and manage fireworks
    class Firework {
      constructor(x, y) {
        this.x = x;
        this.y = y;
        this.exploded = false;
        this.particles = [];
        this.velocityY = -3; // Chậm hơn, tốc độ di chuyển của pháo hoa
        this.velocityX = 0;
        this.createParticles();
      }

      // Create particles for the firework explosion
      createParticles() {
        const colors = ['#FF5733', '#33FF57', '#3357FF', '#FF33A1', '#FFFF33'];
        const particleCount = 50; // Giảm số lượng hạt pháo
        for (let i = 0; i < particleCount; i++) {
          const angle = Math.random() * Math.PI * 2;
          const velocity = Math.random() * 5 + 2;
          const velocityX = Math.cos(angle) * velocity;
          const velocityY = Math.sin(angle) * velocity;
          const size = Math.random() * 3 + 1;
          const lifetime = Math.random() * 50 + 50;
          const color = colors[Math.floor(Math.random() * colors.length)];
          this.particles.push(new Particle(this.x, this.y, color, velocityX, velocityY, size, lifetime));
        }
      }

      // Update and draw all particles
      update() {
        if (this.y <= canvas.height / 3 && !this.exploded) { this.exploded = true; // Explode when the rocket reaches the peak this.createParticles(); } if (!this.exploded) { this.y += this.velocityY; // Rise upwards } // Update particles after explosion this.particles.forEach((particle, index) => {
          particle.update();
          particle.draw();
          if (particle.lifetime <= 0) { this.particles.splice(index, 1); } }); } // Draw the rocket if it hasn't exploded yet draw() { if (!this.exploded) { ctx.beginPath(); ctx.arc(this.x, this.y, 5, 0, Math.PI * 2); ctx.fillStyle = '#FFFFFF'; // White color for the rocket ctx.fill(); } } } // Array to hold all fireworks const fireworks = []; // Create a new firework at random positions function createFirework() { const x = Math.random() * canvas.width; const y = canvas.height; fireworks.push(new Firework(x, y)); } // Animation loop function animate() { ctx.clearRect(0, 0, canvas.width, canvas.height); fireworks.forEach(firework => {
        firework.update();
        firework.draw();
      });
      requestAnimationFrame(animate);
    }

    // Create a firework every 1000ms (1s)
    setInterval(createFirework, 1000);

    // Start the animation
    animate();
  

2. Hoa mai 4 góc website

<img style="position:fixed;z-index:99999;top:0;left:0" src="https://lh3.googleusercontent.com/Nm43LAO21g0ua9Muu0BUELDCkQfCm4sOKIPlXTM3jScFEuuR2q89H4CBKx7bkbzyAvXA-MPb6bFlPXyRGnep6Y3IsBR171nGx3tkB2SD9zyw3qXlxj8iv7SHoP1t0YK-wSmIcg=w141-h143-no"/>
<img style="position:fixed;z-index:99999;top:0;right:0" src="https://lh3.googleusercontent.com/yfLzqRzZL5T5i20FJbhfXEjDjkUT3PshER0urEBiAq1Euy4NTMZBKnMsH8ni-R7ffM8a_mgua5IjbGnp4DWUXQDI_-mNaDfAkgcyFlNNa5u0kRqjaBtW077U47CWsJgNfhhk-g=w141-h143-no"/>
<img style="position:fixed;z-index:99999;bottom:0px;left:0px" src="https://lh3.googleusercontent.com/2U90SIgXGe2W0O2NPluq66u-98JcgCpKBmRvWDcniKdybBTjqIjB0Noq0UsRdG2oOTZlvVh26T1mU9e1nY8lTuOFrSru_saC4J6K6refpHTSJiCb_SykRe2i7MbHgj8q5ESMzg=w200-h159-no"/>
<img style="position:fixed;z-index:9999;bottom:0px;right:0px" src="https://lh3.googleusercontent.com/XH0FHlEyLBF5hzcgkDvSjKlInwSYZ5TUoBruIJoRNnXtezP4kCdi0S7_dwXhee-AbfoWL4g9osBMG32sG7u9Tc30NPOP61GpytphyxoFcZgknHoRm54BprHHO0Umd2q8PpV5Lw=w162-h167-no"/>

Thế là xong! Chúc các bạn thành công

Shares: