Spaces:
Running
Running
File size: 3,097 Bytes
295f9b5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
// Shared JavaScript across all pages
document.addEventListener('DOMContentLoaded', function() {
// Initialize Vanta.js background
if (document.getElementById('vanta-bg')) {
VANTA.GLOBE({
el: "#vanta-bg",
mouseControls: true,
touchControls: true,
gyroControls: false,
minHeight: 200.00,
minWidth: 200.00,
scale: 1.00,
scaleMobile: 1.00,
color: 0xec4899,
color2: 0xfbcfe8,
backgroundColor: 0xfffdfd
});
}
// Smooth scrolling for anchor links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
window.scrollTo({
top: target.offsetTop - 80,
behavior: 'smooth'
});
}
});
});
// Form submission handling
const form = document.getElementById('consultation-form');
if (form) {
form.addEventListener('submit', function(e) {
e.preventDefault();
// Get form values
const name = document.getElementById('name').value;
const age = document.getElementById('age').value;
const phone = document.getElementById('phone').value;
const email = document.getElementById('email').value;
// In a real application, you would send this data to a server
console.log('Form submitted:', { name, age, phone, email });
// Show success message
alert(`${name}๋, ์๋ด ์ ์ฒญ์ด ์๋ฃ๋์์ต๋๋ค. ๋น ๋ฅธ ์์ผ ๋ด์ ์ฐ๋ฝ๋๋ฆฌ๊ฒ ์ต๋๋ค.`);
// Reset form
form.reset();
});
}
// Intersection Observer for animations
const observerOptions = {
root: null,
rootMargin: '0px',
threshold: 0.1
};
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('animate-fade-in-up');
}
});
}, observerOptions);
// Observe sections for animation
document.querySelectorAll('section').forEach(section => {
section.classList.add('opacity-0', 'translate-y-10', 'transition-all', 'duration-700');
observer.observe(section);
});
// Animation classes
const style = document.createElement('style');
style.textContent = `
@keyframes fade-in-up {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.animate-fade-in-up {
animation: fade-in-up 0.7s ease-out forwards;
}
`;
document.head.appendChild(style);
}); |