"use strict"; /* * ========================================== * SP表示判定 * ==========================================*/ var isMobile = function isMobile() { if (matchMedia('(max-width: 767px)').matches || navigator.userAgent.match(/iPhone|Android.+Mobile/)) { return true; } else { return false; } }; var isIpad = function isIpad() { if (navigator.userAgent.match(/iPad/)) { return true; } else { return false; } }; if (isIpad()) { $('body').addClass('iPad'); } /* * ========================================== * easing * ========================================== */ $.easing.myEasing = function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t + b; return -c / 2 * (--t * (t - 2) - 1) + b; }; /* * ========================================== * ScrollTrigger 設定 * ========================================== */ var trigger = new ScrollTrigger["default"](); trigger.add('[data-trigger]', { once: false, offset: { element: { x: 0, y: function y(trigger, rect, direction) { return 0.2; } }, viewport: { x: 0, y: function y(trigger, frame, direction) { return trigger.visible ? 0 : 0.1; } } }, toggle: { "class": { "in": 'visible', out: ['invisible', 'extraClassToToggleWhenHidden'] }, callback: { "in": null, visible: null, out: function out(trigger) { return new Promise(function (resolve, reject) { setTimeout(resolve, 10); }); } } } }); var storySwiper = new Swiper('#js-storySlide', { slidesPerView: "auto", spaceBetween: 30, centeredSlides: true, loop: true, // autoplay: { // delay: 2500, // disableOnInteraction: false, // }, // speed: 500, breakpoints: { 768: { slidesPerView: 3, centeredSlides: false, loop: false, autoplay: false } } }); var voiceSwiper = new Swiper('#js-voiceSlide', { slidesPerView: "auto", spaceBetween: 15, centeredSlides: true, loop: true, breakpoints: { 768: { slidesPerView: 4, spaceBetween: 30, centeredSlides: false, loop: false, autoplay: false } } }); /* * ========================================== * アコーディオン * ========================================== */ var accordionTrigger = $('.js-accordionTrigger'); var accordionIcon = '.c-accordion__icon'; var openAccordionLink = $('.js-openAccordion'); var closeAccordion = function closeAccordion(elem) { elem.next().slideUp(300, 'myEasing'); elem.find(accordionIcon).removeClass('is-opend'); elem.removeClass('is-opend'); }; var openAccordion = function openAccordion(elem) { elem.next().slideDown(300, 'myEasing'); elem.find(accordionIcon).addClass('is-opend'); elem.addClass('is-opend'); }; accordionTrigger.on('click', function (event) { event.preventDefault(); if ($(event.currentTarget).hasClass('is-opend')) { closeAccordion($(event.currentTarget)); } else { openAccordion($(event.currentTarget)); } }); openAccordionLink.on('click', function (event) { event.preventDefault(); var accordionItem = $(event.currentTarget).attr('href'); openAccordion($(accordionItem).find('.c-accordion__head')); }); window.addEventListener('load', function () { var hash = location.hash; if (hash) { console.log(hash); openAccordion($(hash).find($('.js-accordionTrigger'))); } }); /* * ========================================== * ハンバーガーメニュー * ========================================== */ var $hamburgerBtn = $('#js-hamburger'); var $spMenuCopy = $('.c-hamburger__copy'); var $gNav = $('#js-gNav'); var $closeArea = $('#closeArea'); var menuClose = function menuClose() { $spMenuCopy.text('MENU'); $hamburgerBtn.removeClass('is-opend'); $gNav.slideUp(300, 'myEasing'); $closeArea.hide(); }; $hamburgerBtn.on('click', function (event) { if (!$(event.currentTarget).hasClass('is-opend')) { event.preventDefault(); //open $(event.currentTarget).addClass('is-opend'); $spMenuCopy.text('CLOSE'); $gNav.slideDown(300, 'myEasing'); $closeArea.show(); } else { //close event.stopPropagation(); menuClose(); } }); $closeArea.on('click', function () { menuClose(); }); $('.p-gNav__link').on('click', function () { menuClose(); }); var getInstaFeed = function getInstaFeed() { var instagramID = "17841403636001275"; var accessToken = "EAALctMBwzZBcBAOi99p58tmj6Irvl9L9Y3W1uxZB4RwnLYr2SEaqnEIzZBKnQeRweJZCfzYMbHP3dNBsZC43mf1j1VA0XNidVaP12ap70S9oC2OCIuLMRR7Mnbu4FlKD077ii69XhbhZBEQWlziTYV3ZCP5x2JdoUGJxWc04qIWbaBw8IF86gAGtbRFaCtwx5ZAG9ZAyOExUTqwZDZD"; $.ajax({ // jQueryのajaxでjsonデータを取得しますね type: 'GET', url: "https://graph.facebook.com/v16.0/".concat(instagramID, "?access_token=").concat(accessToken, "&fields=name,media{caption,like_count,media_url,permalink,timestamp,username}"), dataType: 'json', success: function success(json) { var insta = json.media.data; var count = 0; for (var i = 0; i < 10; i++) { var url = insta[i].media_url; // 動画ソースのURL var href = insta[i].permalink; // リンク先URL var caption = insta[i].caption; // 投稿のキャプション if (url) { count++; // console.log('count' + count) $('#js-getInstagramFeed').append(" \n
\n \n \"").concat(caption,\n \n
\n ")); } if (2 < count) { break; } } instaSlider(); } }); }; getInstaFeed(); var instaSlider = function instaSlider() { if (isMobile()) { var instagramCarousel = new Swiper('#js-instagramCarousel', { loop: true, slidesPerView: 2, spaceBetween: 10, centeredSlides: true, // centeredSlidesBounds: true, autoplay: { delay: 2500, disableOnInteraction: false }, speed: 500 }); } }; instaSlider(); var keyVisual = document.querySelector('#js-keyVisual'); var container = document.querySelector('#js-keyVisualContainer'); var fixedObject = document.querySelector('#js-fixedObject'); var chatbot = document.querySelector('#chatbotBtn'); var timeout = 0; var header = document.querySelector('.l-header'); var headerZindex = 1000; var windowH = window.innerHeight; var imageH = keyVisual.clientHeight; var moveY = (imageH - windowH) / 2; // if (!isMobile()) { window.addEventListener('load', function () { keyVisual.classList.add('is-animeStart'); keyVisual.style.translate = "-50% -".concat(moveY, "px"); var keyVisualTop = window.pageYOffset + container.getBoundingClientRect().top; console.log(keyVisualTop); keyVisual.addEventListener('animationend', function () { // アニメーション終了後に実行する内容 setTimeout(function () { complete(); }, timeout); }); keyVisual.addEventListener('webkitAnimationEnd', function () { // アニメーション終了後に実行する内容 setTimeout(function () { complete(); }, timeout); }); var complete = function complete() { keyVisual.classList.add('is-complete'); fixedObject.classList.add('is-complete'); chatbot.classList.add('is-show'); keyVisual.style.translate = "-50% ".concat(keyVisualTop, "px"); setTimeout(function () { header.style.zIndex = 110; chatbot.style.zIndex = 10000; }, headerZindex); }; }); // } var modal = document.getElementById('js-modal'); var modalOpen = document.querySelectorAll('.js-modalOpen'); var modalClose = document.querySelectorAll('.js-modalClose'); var modalContents = document.querySelectorAll('.js-modalContents'); // const bodyElement = document.getElementsByTagName('body')[0] var bodyElement = document.body; // const modalVideo = document.getElementById('js-modalVideo') var scrollTopPosition = null; //modal open modalOpen.forEach(function (el) { el.addEventListener('click', function (event) { event.preventDefault(); modal.classList.add('is-show'); scrollTopPosition = document.documentElement.scrollTop || document.body.scrollTop; modalContents.forEach(function (element) { element.classList.remove('is-active'); }); var target = event.currentTarget.getAttribute('href'); document.querySelector(target).classList.add('is-active'); //bodyを固定 bodyElement.setAttribute('style', "position: fixed; width: 100%; top: -".concat(scrollTopPosition, "px")); //動画の再生 // setTimeout(() => { // modalVideo.play() // }, 500); }); }); //modal close modalClose.forEach(function (el) { el.addEventListener('click', function (event) { event.preventDefault(); modal.classList.remove('is-show'); //bodyの固定を解除 bodyElement.setAttribute('style', "position: relative; width: auto; top: auto;"); scrollTo(0, scrollTopPosition); scrollTopPosition = null; //動画の停止・初期位置まで戻す // modalVideo.pause() // modalVideo.currentTime = 0 }); }); /* * ========================================== * 続きを読むボタン *========================================== */ var moreBtn = $('.js-moreButton'); moreBtn.on('click', function (event) { event.preventDefault(); var modeBody = $(event.currentTarget).prev('.js-moreBody'); if (modeBody.hasClass('is-opend')) { modeBody.slideUp(300, 'myEasing'); modeBody.removeClass('is-opend'); moreBtn.removeClass('is-opend'); setTimeout(function () { $(event.currentTarget).find('.js-moreButtonCopy').text('続きを読む'); }, 300); } else { modeBody.slideDown(300, 'myEasing'); modeBody.addClass('is-opend'); moreBtn.addClass('is-opend'); setTimeout(function () { $(event.currentTarget).find('.js-moreButtonCopy').text('閉じる'); }, 300); } }); /* * ========================================== * 動作させないリンク *========================================== */ $('.js-dontWorkLink').on('click', function (event) { event.preventDefault(); }); var mindenModal = document.querySelector('#js-pointMindenModal'); var mindenModalOpen = document.querySelectorAll('.js-pointMindenModalOpen'); var mindenModalClose = document.querySelectorAll('.js-pointMindenModalClose'); var scrollTopPositionMinden = null; mindenModalOpen.forEach(function (el) { el.addEventListener('click', function (event) { console.log('sss'); event.preventDefault(); mindenModal.classList.add('is-show'); scrollTopPosition = document.documentElement.scrollTop || document.body.scrollTop; //bodyを固定 bodyElement.setAttribute('style', "position: fixed; width: 100%; top: -".concat(scrollTopPosition, "px")); }); }); mindenModalClose.forEach(function (el) { el.addEventListener('click', function (event) { event.preventDefault(); mindenModal.classList.remove('is-show'); //bodyの固定を解除 bodyElement.setAttribute('style', "position: relative; width: auto; top: auto;"); scrollTo(0, scrollTopPosition); scrollTopPosition = null; }); }); /* * ========================================== * Smooth scroll *========================================== */ $('.js-smoothScroll').click(function (event) { event.preventDefault(); // const adjust = isMobile() ? 112 : 0 var adjust = 0; var speed = 500; var href = $(event.currentTarget).attr('href'); var target = $(href == '#' || href == '' ? 'html' : href); var position = target.offset().top - adjust; $('html, body').animate({ scrollTop: position }, speed, 'myEasing'); }); /* * ========================================== * window height *========================================== */ var winHeight = function winHeight() { var vh = window.innerHeight * 0.01; document.documentElement.style.setProperty('--vh', "".concat(vh, "px")); }; winHeight(); /* * ========================================== * パラメータによる表示・非表示 *========================================== */ $(function () { var paramGet = function paramGet() { /* vars ------------------------------- */ var url_search = location.search, param = [], key = null; if (url_search.length === 0) { return ""; } //アプリページからの遷移の都合上、区切り文字に'?'を追加 url_search = url_search.substr(1).split(/[&?]/); /* function ------------------------------- */ for (var i = 0; i < url_search.length; i++) { // "&"で分離したパラメータを"="で再分離 key = url_search[i].split("="); // パラメータを連想配列でセット param[key[0]] = key[1]; } return param; }; var minden_param = function minden_param() { var param = paramGet(), $mvng = $('.mvng'); if (param['root'] == undefined || param['root'] !== 'rid_sms') { $mvng.remove(); } }; /** ========================================== * スライダー *========================================== */ var mainSlider01 = function mainSlider01() { var c = { sliderName: ".js-minden_slider01" }; var $elm = $(c.sliderName); if ($elm.length === 0) { return false; } $elm.each(function () { $(this).slick({ pauseOnFocus: false, pauseOnHover: false, autoplay: true, slidesToScroll: 1, slidesToShow: 1, autoplaySpeed: 4000, speed: 2100, fade: true, swipe: false, arrows: false, dots: false }); }); }; /** ========================================== * アンカーリンク(読み込み時) *========================================== */ $(window).on("load", function () { var hash = location.hash, fixedPartsClassName = '.js-fixedHeader', speed = 300, easing = "swing"; if (hash.length !== 0) { var target = $(hash); if (target.length === 0) { return false; } var difference = $(fixedPartsClassName).innerHeight() || 0, position = target.offset().top - difference; $("html, body").animate({ scrollTop: position }, speed, easing); } }); /** ========================================== * アコーディオン *========================================== */ var accordion = function accordion(config) { var c = $.extend({ elm: ".toggleWrap", trigger: ".toggleTrigger", target: ".toggleContent", speed: 300, openNm: "open" }, config); // vars var $elm = $(c.elm), $trg = $(c.trigger); if ($elm.length === 0) { return false; } // setting $(c.target).not("." + c.openNm).hide(); // trigger $trg.on("click", function () { var self = $(this), $wrap = self.parents(c.elm), $target = $wrap.find(c.target); if (self.hasClass(c.openNm)) { self.removeClass(c.openNm); $target.stop().slideUp(c.speed); } else { self.addClass(c.openNm); $target.stop().slideDown(c.speed); } }); }; /* * ========================================== * チャットボット * ========================================== */ var chatbot = function chatbot() { //var var $elm = $("#chatbotBtn"), $toggleBtn = $(".js-chatbot-toggle_button", $elm), $toggleImg = $(".js-chatbot-toggle_image", $elm), $elmShowPosition = $(".js-chatbot-show_position"), imageFileName = $toggleImg.attr('src'), showPosition = 0, winHeight = $(window).height(), speed = 300; if ($elm.length === 0) { return false; } //function var preloadImg = function preloadImg() { for (var i = 0; i < arguments.length; i++) { $('').attr('src', arguments[i]); } }; //画像切り替え if ($toggleBtn.length !== 0) { //init imageFileName = imageFileName.replace(/(.+?)_on\.(.+)/, '$1_off.$2'); preloadImg(imageFileName); //trigger $toggleBtn.on('click', function () { $toggleImg.attr('src', imageFileName); $(this).hide(); }); } //表示位置 if ($elmShowPosition.length !== 0) { //int showPosition = $elmShowPosition.offset().top; if (showPosition - winHeight < $(window).scrollTop()) { $elm.show(); } else { $elm.hide(); } //trigger $(window).on('scroll', function () { if (showPosition - winHeight < $(window).scrollTop()) { $elm.fadeIn(speed); } else { $elm.fadeOut(speed); } }); isWindowSizeCheck(function () { showPosition = $elmShowPosition.offset().top; }); } }; /* init ---------------------------- */ minden_param(); mainSlider01(); accordion(); chatbot(); });