// ======================================== // Gallery 페이지 전용 JavaScript // ======================================== document.addEventListener('DOMContentLoaded', function() { initGallery(); initLightbox(); initGalleryAnimations(); initCustom360Viewers(); }); // 갤러리 초기화 function initGallery() { const galleryItems = document.querySelectorAll('.gallery-item'); galleryItems.forEach((item, index) => { const img = item.querySelector('.gallery-img'); // 이미지 클릭 시 라이트박스 열기 img.addEventListener('click', () => openLightbox(index)); // 이미지 로딩 에러 처리 img.addEventListener('error', function() { this.src = 'images/placeholder.jpg'; this.alt = '이미지를 불러올 수 없습니다'; }); // 레이지 로딩 구현 if ('IntersectionObserver' in window) { const imageObserver = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { const img = entry.target; img.src = img.dataset.src || img.src; img.classList.remove('lazy'); imageObserver.unobserve(img); } }); }); if (img.dataset.src) { imageObserver.observe(img); } } }); } // 라이트박스 기능 let currentImageIndex = 0; const galleryImages = document.querySelectorAll('.gallery-img'); function initLightbox() { // 라이트박스 HTML 생성 const lightboxHTML = `
360° 이미지 로딩중...
`; loader.style.cssText = ` position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); text-align: center; color: #fff; z-index: 10; pointer-events: none; `; this.container.appendChild(loader); this.loadingElement = loader; } hideLoading() { if (this.loadingElement) { this.loadingElement.remove(); this.loadingElement = null; } } showError() { const errorElement = document.createElement('div'); errorElement.innerHTML = `