// right-click none document.addEventListener('DOMContentLoaded', () => { document.addEventListener('contextmenu', function(e) { e.preventDefault(); }); }); // loading const initLoading = () => { const loading = document.querySelector('.loading'); const main = document.querySelector('.mainContents'); const body = document.body; const hasVisited = sessionStorage.getItem('hasVisited'); if (hasVisited) { if (loading) loading.style.display = 'none'; if (main) main.classList.add('show'); body.classList.add('is-scrollable'); // 2回目以降の訪問時:即座にポップアップを動かす initPopup(); } else { window.addEventListener('load', () => { loading.classList.add('animate'); const startTime = performance.now(); const MIN_LOADING_TIME = 3500; const wait = Math.max(0, MIN_LOADING_TIME - (performance.now() - startTime)); setTimeout(() => { // ① ローディングのフェードアウトを開始 loading.classList.add('fade-out'); // ② フェードアウト開始と同時に、メインコンテンツを表示状態にする if (main) main.classList.add('show'); if (body) body.classList.add('is-scrollable'); // ③ その直後にポップアップを表示(これでバッティングを防ぎます) initPopup(); }, wait); loading.addEventListener('animationend', (e) => { if (e.animationName === 'fadeOut') { // フェードアウトアニメーションが完全に終わったら、古いローディング要素を消すだけにする if (loading) loading.style.display = 'none'; sessionStorage.setItem('hasVisited', 'true'); } }); }); } }; initLoading(); // hamburger const hamburger = document.querySelector(".js-hamburger"); const drawer = document.querySelector(".js-drawer"); const drawerLinks = document.querySelectorAll(".js-drawer a"); const body = document.body; hamburger.addEventListener("click", () => { const isActive = drawer.classList.toggle("is-active"); hamburger.classList.toggle("is-active"); if (isActive) { drawer.style.visibility = "visible"; body.classList.add("is-fixed"); } else { body.classList.remove("is-fixed"); setTimeout(() => { if (!drawer.classList.contains("is-active")) { drawer.style.visibility = "hidden"; } }, 300); } }); drawerLinks.forEach((drawerLink) => { drawerLink.addEventListener("click", () => { hamburger.classList.remove("is-active"); drawer.classList.remove("is-active"); body.classList.remove("is-fixed"); setTimeout(() => { drawer.style.visibility = "hidden"; }, 300); }); }); drawer.addEventListener("click", () => { hamburger.classList.remove("is-active"); drawer.classList.remove("is-active"); body.classList.remove("is-fixed"); setTimeout(() => { drawer.style.visibility = "hidden"; }, 300); }); // nav2 wrap const listItems = document.querySelectorAll('.nav2 li'); const listContainer = document.querySelector('.nav2'); function checkWrap() { let prevOffsetTop = listItems[0].offsetTop; listItems.forEach((item, index) => { if (item.offsetTop !== prevOffsetTop) { listItems[index - 1].querySelector('a').style.borderRight = 'none'; } prevOffsetTop = item.offsetTop; }); } window.addEventListener('resize', checkWrap); checkWrap(); // delayScroll function delayScrollAnime() { var time = 0.2; var value = time; $('.delayScroll').each(function () { var parent = this; var elemPos = $(this).offset().top; var scroll = $(window).scrollTop(); var windowHeight = $(window).height(); var childs = $(this).children(); if (scroll >= elemPos - windowHeight && !$(parent).hasClass("play")) { $(childs).each(function () { if (!$(this).hasClass("fadeUp")) { $(parent).addClass("play"); $(this).css("animation-delay", value + "s"); $(this).addClass("fadeUp"); value = value + time; var index = $(childs).index(this); if((childs.length-1) == index){ $(parent).removeClass("play"); } } }) } }) } $(window).scroll(function (){ delayScrollAnime() }); // anime-up document.addEventListener("DOMContentLoaded", () => { const objects = document.querySelectorAll('.anime-up'); const cb = function(entries, observer) { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('displayed'); observer.unobserve(entry.target); } }); }; const options = { root: null, rootMargin: "0px", threshold: 0 }; const io = new IntersectionObserver(cb, options); objects.forEach(object => { io.observe(object); }); }); const animationTargetElements = document.querySelectorAll(".anime-up"); animationTargetElements.forEach(targetElement => { const originalHTML = targetElement.innerHTML; const tempDiv = document.createElement("div"); tempDiv.innerHTML = originalHTML; targetElement.innerHTML = ""; let charIndex = 0; tempDiv.childNodes.forEach(node => { if (node.nodeType === Node.TEXT_NODE) { node.textContent.split("").forEach(char => { const spanWrapper = document.createElement("span"); const innerSpan = document.createElement("span"); innerSpan.style.animationDelay = `${(charIndex * 0.05)}s`; innerSpan.textContent = char; spanWrapper.appendChild(innerSpan); targetElement.appendChild(spanWrapper); charIndex++; }); } else if (node.nodeType === Node.ELEMENT_NODE && node.classList.contains("jp")) { const jpWrapper = document.createElement("span"); jpWrapper.classList.add("jp"); node.textContent.split("").forEach(char => { const spanWrapper = document.createElement("span"); const innerSpan = document.createElement("span"); innerSpan.style.animationDelay = `${(charIndex * 0.05)}s`; innerSpan.textContent = char; spanWrapper.appendChild(innerSpan); jpWrapper.appendChild(spanWrapper); charIndex++; }); targetElement.appendChild(jpWrapper); } }); }); // youtube (function () { if ($(".js-modal-video").length) { $(".js-modal-video").modalVideo({ channel: "youtube", youtube: { controls: 1, }, }); $(document).on("click", ".js-modal-video", function () { $("body").addClass("video-noscroll"); }); const observer = new MutationObserver(function () { if (!$(".modal-video").length) { $("body").removeClass("video-noscroll"); } }); observer.observe(document.body, { childList: true, subtree: true, }); } })(); // scroll-in jQuery(function ($) { var fadeIn = $('.scroll-in'); if ($('body').hasClass('subpage')) { fadeIn.each(function () { $(this).addClass('scroll-opacity'); }); } else { $(window).on('scroll', function () { fadeIn.each(function () { var offset = $(this).offset().top; var scroll = $(window).scrollTop(); var windowHeight = $(window).height(); if (scroll > offset - windowHeight + 150) { $(this).addClass('scroll-opacity'); } }); }); } }); // slider1 $(function () { $(".slider1").slick({ dots: true, infinite: true, arrows: true, appendArrows: $('.arrow_box'), prevArrow: '', nextArrow: '', slidesToShow: 2, slidesToScroll: 1, centerMode: false, responsive: [ { breakpoint: 767, settings: { slidesToShow: 1, centerMode: false, } } ] }); }); // slider2 $(function () { $(".slider2").slick({ dots: true, infinite: true, arrows: true, appendArrows: $('.arrow_box2'), prevArrow: '', nextArrow: '', slidesToShow: 2, slidesToScroll: 1, centerMode: false, responsive: [ { breakpoint: 767, settings: { slidesToShow: 1, centerMode: false, } } ] }); }); window.addEventListener('DOMContentLoaded', () => { const header = document.querySelector('.js-header'); const drawer = document.querySelector('.js-drawer'); const updateDrawerPosition = () => { if (header && drawer) { const rect = header.getBoundingClientRect(); // 「*」という誤文字を綺麗に削除しました const topOffset = rect.bottom; document.documentElement.style.setProperty('--drawer-top', `${topOffset}px`); } }; updateDrawerPosition(); window.addEventListener('resize', updateDrawerPosition); window.addEventListener('scroll', updateDrawerPosition); }); // Accordion $(function () { $('.accordion__title').on('click', function () { $(this).next().slideToggle(); $(this).toggleClass('show'); }); }); const menuBtns = document.querySelectorAll('.acordion-btn'); const menuLists = document.querySelectorAll('.acordion'); menuBtns.forEach((element, index) => { element.addEventListener('click', function () { menuBtns[index].classList.toggle('is-open'); menuLists[index].classList.toggle('is-open'); }); }); $('.accordion-header').click(function() { $(this).next().slideToggle(); $(this).toggleClass('active'); }); // popup (※initPopup関数の中身は元のままで大丈夫です) function initPopup() { const isTestingMode = true; const storage = isTestingMode ? sessionStorage : localStorage; const popupOverlay = document.getElementById('popup-overlay'); const closeButton = document.getElementById('close-button'); if (!popupOverlay || !closeButton) { return; } const hasPopupVisited = storage.getItem('hasPopupVisited'); const closePopup = () => { popupOverlay.classList.add('popup-hidden'); document.body.classList.remove('no-scroll'); }; const setVisitedFlag = () => { storage.setItem('hasPopupVisited', 'true'); }; if (!hasPopupVisited) { popupOverlay.classList.remove('popup-hidden'); if (!popupOverlay.classList.contains('off')) { document.body.classList.add('no-scroll'); } setVisitedFlag(); const popupLinks = popupOverlay.querySelectorAll('a'); popupLinks.forEach((link) => { const href = link.getAttribute('href'); if (!href || href.trim() === '' || href.trim() === '#') { link.style.pointerEvents = 'none'; link.addEventListener('click', (event) => { event.preventDefault(); }); } }); closeButton.addEventListener('click', closePopup); popupOverlay.addEventListener('click', (event) => { if (event.target === popupOverlay) { closePopup(); } }); } else { popupOverlay.classList.add('popup-hidden'); } } document.querySelectorAll('img').forEach(img => { img.setAttribute('draggable', 'false'); }); document.addEventListener('contextmenu', function(e) { if (e.target.tagName === 'IMG') { e.preventDefault(); } });