ai-api-hub / script.js
simyan1's picture
یک سایت کامل ارائه کننده api سرویس های هوش مصنوعی طراحی کن. زبان آن فارسی باشد. و کاملأ کاربرپسند و رسپانسیو. بخش قیمت گذاری هم داشته باشد. کامل باشد. صفحات مختلف یک سایت را داشته باشد.
d0a8ad7 verified
// script.js
document.addEventListener('DOMContentLoaded', () => {
// 1. Mobile Menu Toggle
const mobileMenuBtn = document.getElementById('mobile-menu-btn');
const mobileMenu = document.getElementById('mobile-menu');
if (mobileMenuBtn && mobileMenu) {
mobileMenuBtn.addEventListener('click', () => {
mobileMenu.classList.toggle('hidden');
});
// Close mobile menu when clicking a link
const mobileLinks = mobileMenu.querySelectorAll('a');
mobileLinks.forEach(link => {
link.addEventListener('click', () => {
mobileMenu.classList.add('hidden');
});
});
}
// 2. Navbar Scroll Effect (Glassmorphism toggle)
const navbar = document.getElementById('navbar');
window.addEventListener('scroll', () => {
if (window.scrollY > 20) {
navbar.classList.add('shadow-md');
} else {
navbar.classList.remove('shadow-md');
}
});
// 3. Intersection Observer for Fade-in Animations
const observerOptions = {
threshold: 0.1
};
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('fade-in-up'); // Or add a class that triggers CSS animation
observer.unobserve(entry.target);
}
});
}, observerOptions);
// Target elements to animate
const animatedElements = document.querySelectorAll('.group, .scale-105, .bg-white.rounded-2xl');
animatedElements.forEach(el => {
// el.style.opacity = 0; // Initial state handled by CSS animation classes in HTML
observer.observe(el);
});
// 4. Simple Contact Form Handler (Demo)
const contactForm = document.querySelector('form');
if (contactForm) {
contactForm.addEventListener('submit', (e) => {
e.preventDefault();
const emailInput = contactForm.querySelector('input[type="email"]');
if(emailInput && emailInput.value) {
// Simulate API call
const btn = contactForm.querySelector('button');
const originalText = btn.innerText;
btn.innerText = 'در حال ارسال...';
btn.disabled = true;
btn.classList.add('opacity-75', 'cursor-not-allowed');
setTimeout(() => {
alert(`ایمیل ${emailInput.value} با موفقیت ثبت شد!`);
btn.innerText = 'ارسال شد ✓';
btn.classList.remove('bg-secondary');
btn.classList.add('bg-green-500');
emailInput.value = '';
}, 1500);
}
});
}
// 5. Pricing Card Hover Effect (Optional JS enhancement)
const cards = document.querySelectorAll('#pricing .group, #pricing > div > div');
cards.forEach(card => {
card.addEventListener('mouseenter', () => {
// Logic if needed
});
});
});