// Parallax effect for header
const handleParallax = () => {
const header = document.querySelector('.header');
const scrolled = window.pageYOffset;
header.style.backgroundPositionY = scrolled * 0.5 + 'px';
};
// Floating animation for product cards\
const initFloatingAnimation = () => {
const productCards = document.querySelectorAll('.product-card');
productCards.forEach((card, index) => {
card.style.animationDelay = `${index * 0.2}s`;
});
};
// Button hover effects
const initButtonEffects = () => {
const buttons = document.querySelectorAll('.button');
buttons.forEach(button => {
button.addEventListener('mouseover', () => {
button.classList.add('pulse');
});
button.addEventListener('mouseout', () => {
button.classList.remove('pulse');
});
});
};
// Smooth reveal animation for sections
const initSmoothReveal = () => {
const sections = document.querySelectorAll('section');
const observer = new IntersectionObserver(
(entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('fade-in');
}
});
},
{threshold: 0.1}
);
sections.forEach(section => {
observer.observe(section);
});
};
// Cart animation
const initCartAnimation = () => {
const cartButton = document.querySelector('.cart-button');
cartButton.addEventListener('click', () => {
cartButton.classList.add('spin');
setTimeout(() => {
cartButton.classList.remove('spin');
}, 1000);
});
};
// Initialize all animations
document.addEventListener('DOMContentLoaded', () => {
window.addEventListener('scroll', handleParallax);
initFloatingAnimation();
initButtonEffects();
initSmoothReveal();
initCartAnimation();
});
// Performance optimization
let animationFrame;
const optimizedParallax = () => {
if (animationFrame) {
window.cancelAnimationFrame(animationFrame);
}
animationFrame = window.requestAnimationFrame(handleParallax);
};
window.addEventListener('scroll', optimizedParallax, {passive: true});