style: drop icon slop, swap primary to caramel, kill particles
CI & Lighthouse / test (push) Has been cancelled
CI & Lighthouse / test (push) Has been cancelled
- Remove 8 duplicated generic SVG icons from tech cards - Switch --color-primary from teal (#1D7874) to gold (#D4A574) - Remove particle canvas system (~70 lines JS, canvas element, CSS) - Grain texture + steam now carry atmosphere alone
This commit is contained in:
@@ -55,75 +55,8 @@ function initSkillBars() {
|
||||
skillItems.forEach(item => observer.observe(item));
|
||||
}
|
||||
|
||||
// ===== PARTICLE BACKGROUND =====
|
||||
function initParticles() {
|
||||
const canvas = document.getElementById('particles');
|
||||
if (!canvas) return;
|
||||
|
||||
const ctx = canvas.getContext('2d');
|
||||
let particles = [];
|
||||
let animationId;
|
||||
|
||||
function resize() {
|
||||
canvas.width = window.innerWidth;
|
||||
canvas.height = window.innerHeight;
|
||||
}
|
||||
|
||||
class Particle {
|
||||
constructor() {
|
||||
this.x = Math.random() * canvas.width;
|
||||
this.y = Math.random() * canvas.height;
|
||||
this.vx = (Math.random() - 0.5) * 0.3;
|
||||
this.vy = (Math.random() - 0.5) * 0.3;
|
||||
this.radius = Math.random() * 1.5 + 0.5;
|
||||
this.opacity = Math.random() * 0.3 + 0.1;
|
||||
}
|
||||
|
||||
update() {
|
||||
this.x += this.vx;
|
||||
this.y += this.vy;
|
||||
|
||||
if (this.x < 0 || this.x > canvas.width) this.vx *= -1;
|
||||
if (this.y < 0 || this.y > canvas.height) this.vy *= -1;
|
||||
}
|
||||
|
||||
draw() {
|
||||
ctx.beginPath();
|
||||
ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2);
|
||||
ctx.fillStyle = `rgba(111, 78, 55, ${this.opacity})`;
|
||||
ctx.fill();
|
||||
}
|
||||
}
|
||||
|
||||
function init() {
|
||||
resize();
|
||||
particles = [];
|
||||
const particleCount = Math.floor((canvas.width * canvas.height) / 15000);
|
||||
for (let i = 0; i < particleCount; i++) {
|
||||
particles.push(new Particle());
|
||||
}
|
||||
}
|
||||
|
||||
function animate() {
|
||||
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||||
|
||||
particles.forEach(particle => {
|
||||
particle.update();
|
||||
particle.draw();
|
||||
});
|
||||
|
||||
animationId = requestAnimationFrame(animate);
|
||||
}
|
||||
|
||||
window.addEventListener('resize', () => {
|
||||
cancelAnimationFrame(animationId);
|
||||
init();
|
||||
animate();
|
||||
});
|
||||
|
||||
init();
|
||||
animate();
|
||||
}
|
||||
// ===== PARTICLE BACKGROUND (removed) =====
|
||||
// initParticles removed — grain texture + steam carry the atmosphere
|
||||
|
||||
// ===== INTERACTIVE TESTIMONIALS =====
|
||||
function initTestimonials() {
|
||||
@@ -246,7 +179,6 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
initTypewriter();
|
||||
initScrollProgress();
|
||||
initSkillBars();
|
||||
initParticles();
|
||||
initTestimonials();
|
||||
initParallax();
|
||||
initMetricsCounter();
|
||||
|
||||
Reference in New Issue
Block a user