// キャッシュされたDOM要素 var $window = $(window); var $header = $('#header'); var $headerImg = $('#header-img'); var $copy = $('#copy'); var $bghondana = $('#bghondana'); var $scrollDown = $('#scrolldown'); var $footerBar = $('#sp-footerbar'); var $smoothTextTrigger = $('.smoothTextTrigger'); var windowHeight, headerHeight, change; var isLoadingComplete = false; // ローディング状態のフラグ // スクロールイベントの最適化 function handleScroll() { var scroll = $window.scrollTop(); if (scroll < change) { var scaleHeaderImg = (100 + scroll / 120) / 100; var opacityHeaderImg = 0.9 - scroll / change; var scaleCopy = (100 + scroll / 80) / 100; var opacityCopy = scroll > change * 0.9 ? Math.max(1 - (scroll - change * 0.9) / 200, 0) : 1; $headerImg.css({ transform: 'scale(' + scaleHeaderImg + ')', opacity: opacityHeaderImg }); $copy.css({ transform: 'scale(' + scaleCopy + ')', opacity: opacityCopy }); } else { $headerImg.css({ opacity: 0 }); $copy.css({ opacity: 0 }); } if (scroll > change) { $bghondana.addClass('go'); $scrollDown.addClass('go'); $footerBar.addClass('go'); } else { $bghondana.removeClass('go'); $scrollDown.removeClass('go'); $footerBar.removeClass('go'); } SmoothTextAnime(); TextTypingAnime(); } // 印象編 8-16 滑らかに出現 function SmoothTextAnime() { $smoothTextTrigger.each(function() { var elemPos = $(this).offset().top - 50; var scroll = $window.scrollTop(); if (scroll >= elemPos - windowHeight) { $(this).addClass('smoothTextAppear'); } else { $(this).removeClass('smoothTextAppear'); } }); } // タイピングアニメーション function TextTypingAnime() { if (!isLoadingComplete) return; // ローディングが完了していなければ実行しない $('.TextTyping').each(function() { var elemPos = $(this).offset().top - 50; var scroll = $window.scrollTop(); var thisChild = $(this).children(); if (scroll >= elemPos - windowHeight * 0.64) { thisChild.each(function(i) { var time = 150; $(this).delay(time * i).fadeIn(time); }); } else { thisChild.stop().css("display", "none"); } }); } // 初期値の設定とイベントリスナーの追加 function init() { windowHeight = $window.height(); headerHeight = $header.outerHeight(); change = headerHeight - windowHeight; $window.on('scroll', handleScroll); $window.on('load', function() { // spanタグを追加する var element = $(".TextTyping"); element.each(function() { var text = $(this).html(); var textbox = ""; text.split('').forEach(function(t) { if (t !== " ") { textbox += '' + t + ''; } else { textbox += t; } }); $(this).html(textbox); }); TextTypingAnime(); handleLoadingScreen(); }); } // ローディング画面の処理 function handleLoadingScreen() { $("#splash-logo").delay(1200).fadeOut('slow', function() { $("#splash").delay(300).fadeOut('slow', function() { $('body').addClass('appear'); setTimeout(function() { isLoadingComplete = true; handleScroll(); TextTypingAnime(); }, 500); }); }); $('.splashbg1').on('animationend', function() { }); } // ナビゲーションのトグル $(".openbtn").click(function() { $(this).toggleClass('active'); $("#g-nav").toggleClass('panelactive'); }); $("#g-nav a").click(function() { $(".openbtn").removeClass('active'); $("#g-nav").removeClass('panelactive'); }); // 初期化関数の呼び出し init();