coinbase / script.js
henztech's picture
Upload 9 files
e12f096 verified
// Mobile menu toggle
document.addEventListener('DOMContentLoaded', function() {
const mobileMenuBtn = document.querySelector('.mobile-menu-btn');
const navLinks = document.querySelector('.nav-links');
const navButtons = document.querySelector('.nav-buttons');
let menuOpen = false;
mobileMenuBtn.addEventListener('click', function() {
if (!menuOpen) {
// Create mobile menu
const mobileMenu = document.createElement('div');
mobileMenu.classList.add('mobile-menu');
// Clone nav links and buttons
const navLinksClone = navLinks.cloneNode(true);
const navButtonsClone = navButtons.cloneNode(true);
// Append to mobile menu
mobileMenu.appendChild(navLinksClone);
mobileMenu.appendChild(navButtonsClone);
// Add mobile menu after header
const header = document.querySelector('header');
header.after(mobileMenu);
// Animate menu button
mobileMenuBtn.classList.add('open');
// Add styles for mobile menu
const style = document.createElement('style');
style.id = 'mobile-menu-styles';
style.innerHTML = `
.mobile-menu {
background-color: white;
padding: 20px;
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1);
}
.mobile-menu .nav-links {
display: flex;
flex-direction: column;
gap: 15px;
margin-bottom: 20px;
}
.mobile-menu .nav-buttons {
display: flex;
flex-direction: column;
gap: 10px;
}
.mobile-menu-btn.open span:nth-child(1) {
transform: rotate(45deg) translate(5px, 5px);
}
.mobile-menu-btn.open span:nth-child(2) {
opacity: 0;
}
.mobile-menu-btn.open span:nth-child(3) {
transform: rotate(-45deg) translate(7px, -6px);
}
`;
document.head.appendChild(style);
menuOpen = true;
} else {
// Remove mobile menu
const mobileMenu = document.querySelector('.mobile-menu');
if (mobileMenu) {
mobileMenu.remove();
}
// Remove mobile menu styles
const mobileMenuStyles = document.getElementById('mobile-menu-styles');
if (mobileMenuStyles) {
mobileMenuStyles.remove();
}
// Reset menu button
mobileMenuBtn.classList.remove('open');
menuOpen = false;
}
});
// Close mobile menu on window resize
window.addEventListener('resize', function() {
if (window.innerWidth > 768 && menuOpen) {
const mobileMenu = document.querySelector('.mobile-menu');
if (mobileMenu) {
mobileMenu.remove();
}
const mobileMenuStyles = document.getElementById('mobile-menu-styles');
if (mobileMenuStyles) {
mobileMenuStyles.remove();
}
mobileMenuBtn.classList.remove('open');
menuOpen = false;
}
});
// Smooth scrolling for anchor links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function(e) {
e.preventDefault();
const targetId = this.getAttribute('href');
if (targetId === '#') return;
const targetElement = document.querySelector(targetId);
if (targetElement) {
targetElement.scrollIntoView({
behavior: 'smooth'
});
}
// Close mobile menu if open
if (menuOpen) {
const mobileMenu = document.querySelector('.mobile-menu');
if (mobileMenu) {
mobileMenu.remove();
}
const mobileMenuStyles = document.getElementById('mobile-menu-styles');
if (mobileMenuStyles) {
mobileMenuStyles.remove();
}
mobileMenuBtn.classList.remove('open');
menuOpen = false;
}
});
});
// Animate stats on scroll
const statsSection = document.querySelector('.stats');
const statNumbers = document.querySelectorAll('.stat-item h3');
let animated = false;
function animateStats() {
if (animated) return;
const statsPosition = statsSection.getBoundingClientRect().top;
const screenPosition = window.innerHeight / 1.3;
if (statsPosition < screenPosition) {
statNumbers.forEach(stat => {
const targetNumber = stat.textContent;
let currentNumber = 0;
const increment = Math.ceil(parseInt(targetNumber.replace(/[^0-9]/g, '')) / 50);
const duration = 1500; // ms
const interval = duration / (parseInt(targetNumber.replace(/[^0-9]/g, '')) / increment);
const counter = setInterval(() => {
currentNumber += increment;
if (currentNumber >= parseInt(targetNumber.replace(/[^0-9]/g, ''))) {
stat.textContent = targetNumber;
clearInterval(counter);
} else {
if (targetNumber.includes('M')) {
stat.textContent = currentNumber + 'M+';
} else if (targetNumber.includes('B')) {
stat.textContent = '$' + currentNumber + 'B+';
} else {
stat.textContent = currentNumber + '+';
}
}
}, interval);
});
animated = true;
}
}
// Check if stats are in view on scroll
window.addEventListener('scroll', animateStats);
// Check on page load
animateStats();
// Parallax effect for hero section
const hero = document.querySelector('.hero');
window.addEventListener('scroll', function() {
const scrollPosition = window.pageYOffset;
hero.style.backgroundPosition = `50% ${scrollPosition * 0.5}px`;
});
// Product card hover effect
const productCards = document.querySelectorAll('.product-card');
productCards.forEach(card => {
card.addEventListener('mouseenter', function() {
this.style.transform = 'translateY(-10px)';
this.style.boxShadow = '0 10px 30px rgba(0, 0, 0, 0.1)';
});
card.addEventListener('mouseleave', function() {
this.style.transform = 'translateY(0)';
this.style.boxShadow = 'none';
});
});
});