document.addEventListener('DOMContentLoaded', () => { // ========================================================================== // モーダル表示処理 (entry_info.html用) // ========================================================================== const modal = document.getElementById('imageModal'); // モーダル要素が存在する場合のみ実行 if (modal) { const modalImg = document.getElementById('modalImg'); const closeBtn = document.getElementById('modalClose'); const triggers = document.querySelectorAll('.js-modal-trigger'); // リンククリックでモーダル表示 triggers.forEach(trigger => { trigger.addEventListener('click', (e) => { e.preventDefault(); const imgSrc = trigger.getAttribute('href'); modalImg.src = imgSrc; modal.classList.add('active'); document.body.style.overflow = 'hidden'; // 背景スクロール禁止 }); }); // 閉じる処理 const closeModal = () => { modal.classList.remove('active'); document.body.style.overflow = ''; // スクロール解除 setTimeout(() => { modalImg.src = ''; }, 300); }; if (closeBtn) { closeBtn.addEventListener('click', closeModal); } modal.addEventListener('click', (e) => { // 画像以外の領域クリックで閉じる if (e.target === modal || e.target.classList.contains('modal-content')) { closeModal(); } }); } // ========================================================================== // スクロール連動ナビゲーション (guide.html用) // ========================================================================== const sections = document.querySelectorAll('.section'); const navLinks = document.querySelectorAll('.side-nav a, .mobile-nav a'); // セクション要素が存在する場合のみ実行 if (sections.length > 0 && navLinks.length > 0) { window.addEventListener('scroll', () => { let current = ''; // スクロール位置に合わせてアクティブなセクションを判定 // ヘッダーの高さなどを考慮してオフセット値を調整してください const offset = 150; sections.forEach(sec => { const sectionTop = sec.offsetTop; if (window.pageYOffset >= sectionTop - offset) { current = sec.getAttribute('id'); } }); navLinks.forEach(link => { link.classList.remove('active'); // アンカーリンクのhref属性と現在のセクションIDを比較 if (current && link.getAttribute('href').includes(`#${current}`)) { link.classList.add('active'); } }); }); } });