(function ($) { 'use strict'; { window.addEventListener('load',function(){ $('body').addClass('is-loded'); }); } // 銉栥儹銉冦偗闁撱伄鍏遍€氬鏁 const GLOBAL = {}; // 銉樸儍銉€銉机 銈广優銉涚敤銉°儖銉ャ兗銉堛偘銉偣銈ゃ儍銉 const $spToggle = $('.js-sp-toggle'); // 銉樸儍銉€銉机 銈广優銉涚敤瑷€瑾為伕鎶炪儓銈般儷銈广偆銉冦儊 const $langToggle = $('.js-header-lang-toggle'); // 銉樸儍銉€銉机 銈广優銉涚敤銈般儹銉笺儛銉儘銉冦儓銉兗銈儓銈般儷銈广偆銉冦儊 const $globalToggle = $('.js-global-toggle'); /* passive銈儣銈枫儳銉 */ { let passiveSupported = false; try { const options = { get passive() { passiveSupported = true; return false; }, }; window.addEventListener('test', null, options); window.removeEventListener('test', null, options); } catch (e) { passiveSupported = false; } GLOBAL.passiveOption = passiveSupported ? { passive: true } : false; } /* 鑳屾櫙鍥哄畾鍏遍€ */ { const body = document.body; let scrollY; GLOBAL.isKeepFix = false; GLOBAL.fixBody = function (bool) { if (bool) { scrollY = window.pageYOffset; body.classList.add('is-scroll-fixed'); body.style.top = -scrollY + 'px'; } else if (GLOBAL.isKeepFix) { GLOBAL.isKeepFix = false; } else { body.classList.remove('is-scroll-fixed'); body.style.top = null; window.scrollTo(0, scrollY); } }; } /* 銉樸儍銉€銉机 銉°偓銉夈儹銉冦儣銉€銈︺兂 */ { /* PC銉娿儞銈层兗銈枫儳銉 */ const $globalNav = $('.js-global-nav'); // 銈兗銉愩兗銉偆銉ゃ兗鎸垮叆 const $overlay = $('
').addClass('l-header-overlay').appendTo('body'); // 銈傘仐浣曘倝銇嬨伄鐞嗙敱銇ц〃绀恒仌銈屻仧銇俱伨銇牬鍚 $overlay.on('mousedown', function () { if (!$overlay.hasClass('is-open')) { $overlay.off('transitionend').removeClass('is-active'); } }).on('touchstart', function () { $globalNav.trigger('mouseleave'); }); // 銉娿儞銈层兗銈枫儳銉冲叏浣撱儧銉愩兗鏅 let overlayTimer = null; $globalNav.on({ // 銉涖儛銉笺仐銇熴仺銇 mouseenter: function () { clearTimeout(overlayTimer); $overlay.off('transitionend').addClass('is-active'); // 銉堛儵銉炽偢銉с兂銇曘仜銈嬨仧銈併伀閬呫倝銇涖倠 overlayTimer = setTimeout(function () { $overlay.addClass('is-open'); }, 16); }, // 銉涖儛銉笺亴澶栥倢銇熴仺銇 mouseleave: function () { clearTimeout(overlayTimer); // 100ms閬呫倝銇涖仸銉曘偋銉笺儔銈偊銉堛仌銇涖倠 overlayTimer = setTimeout(function () { $overlay.one('transitionend', function () { $overlay.removeClass('is-active'); }).removeClass('is-open'); }, 100); }, }); // 銉夈儹銉冦儣銉€銈︺兂 const dropdownTimers = []; const $globalNavItem = $('.js-global-nav-item'); $globalNav.on({ // 銉涖儛銉笺仐銇熴仺銇 mouseenter: function () { const index = $globalNavItem.index(this); clearTimeout(dropdownTimers[index]); const $sub = $('.js-global-nav-sub', this); $sub.off('transitionend').addClass('is-active'); // 銉堛儵銉炽偢銉с兂銇曘仜銈嬨仧銈併伀閬呫倝銇涖倠 dropdownTimers[index] = setTimeout(function () { $sub.addClass('is-open'); }, 16); }, // 銉涖儛銉笺亴澶栥倢銇熴仺銇 mouseleave: function () { const index = $globalNavItem.index(this); clearTimeout(dropdownTimers[index]); const $sub = $('.js-global-nav-sub', this); // 100ms閬呫倝銇涖仸銉曘偋銉笺儔銈偊銉堛仌銇涖倠 dropdownTimers[index] = setTimeout(function () { $sub.one('transitionend', function () { $sub.removeClass('is-active'); }).removeClass('is-open'); }, 100); }, }, '.js-global-nav-item'); // 銈裤儍銉併儑銉愩偆銈广仹銇儭銈儔銉儍銉椼亴闁嬨亱銇亜銇仹銆併儶銉炽偗銈掓姂鍒躲仚銈 let touchFlag = false; $globalNav.on({ touchstart: function () { touchFlag = true; }, click: function (event) { if (touchFlag) { touchFlag = false; event.preventDefault(); } }, }, '.js-global-nav-item > a:not(.js-global-nav-only)'); /* 銈广優銉涖儕銉撱偛銉笺偡銉с兂 */ const $spNav = $('.js-sp-nav'); const $spMain = $('.js-sp-main'); const $spSubNav = $spMain.show().nextAll(); // 銉°儖銉ャ兗銇枊闁 let spNavTimer = null; $spToggle.on('click', function () { clearTimeout(spNavTimer); if (!$spToggle.hasClass('is-open')) { // 闁嬨亜銇熸檪 GLOBAL.fixBody(true); $spToggle.addClass('is-open'); $spNav.off('transitionend').addClass('is-active'); // 銇欍仹銇粬銇倐銇亴闁嬨亱銈屻仸銇勩倠鍫村悎銇枆銇樸倠 if ($langToggle.hasClass('is-open')) { GLOBAL.isKeepFix = true; $langToggle[0].click(); } if ($globalToggle.hasClass('is-open')) { GLOBAL.isKeepFix = true; $globalToggle[0].click(); } // 銉堛儵銉炽偢銉с兂銇曘仜銈嬨仧銈併伀閬呫倝銇涖倠 spNavTimer = setTimeout(function () { $spNav.addClass('is-open'); }, 16); } else { // 闁夈仒銇熸檪 $spToggle.removeClass('is-open'); $spNav.one('transitionend', function () { $spNav[0].scrollTop = 0; $spNav.removeClass('is-active'); $spMain.show(); $spSubNav.filter('.is-active').off('transitionend').removeClass('is-active is-open is-active-float'); GLOBAL.fixBody(false); }).removeClass('is-open'); } }); // 銈点儢銉°儖銉ャ兗 let spSubNavTimer = null; $spNav.on('click', '.js-sp-subnav', function (event) { event.preventDefault(); clearTimeout(spSubNavTimer); const num = $(this).data('target'); const $target = $('.js-sp-sub-' + num); $target.off('transitionend').addClass('is-active is-active-float'); // 銉堛儵銉炽偢銉с兂銇曘仜銈嬨仧銈併伀閬呫倝銇涖倠 spSubNavTimer = setTimeout(function () { $spMain.hide(); $target.removeClass('is-active-float').addClass('is-open'); }, 16); }); $spNav.on('click', '.js-sp-back', function (event) { event.preventDefault(); clearTimeout(spSubNavTimer); $spSubNav.filter('.is-active').one('transitionend', function () { $(this).removeClass('is-active is-active-float'); }).addClass('is-active-float').removeClass('is-open'); $spMain.show(); }); } /* 鏂囧瓧銈点偆銈 */ { const $root = $('html'); const $textNormal = $('.js-text-size__normal'); const $textLarge = $('.js-text-size__large'); let isInit = false; $textNormal.on('click', function (event) { event.preventDefault(); if ($textNormal.hasClass('is-current')) { return; } $root.removeClass('is-text-large'); $textNormal.addClass('is-current'); $textLarge.removeClass('is-current'); // cookie鍓婇櫎 Cookies.remove('text_size'); }); $textLarge.on('click', function (event) { event.preventDefault(); if ($textLarge.hasClass('is-current')) { return; } $root.addClass('is-text-large'); $textNormal.removeClass('is-current'); $textLarge.addClass('is-current'); // cookie銈汇儍銉 isInit && Cookies.set('text_size', 'l', { expires: 365, path: '/' }); }); // cookie銉併偋銉冦偗 if (Cookies.get('text_size') === 'l') { $textLarge[0].click(); } else { $textNormal.addClass('is-current'); } isInit = true; } /* 銉樸儍銉€銉机 銈广優銉涚敤瑷€瑾為伕鎶 */ { const $headerLang = $('.js-header-lang'); let langTimer = null; $langToggle.on('click', function () { clearTimeout(langTimer); if (!$langToggle.hasClass('is-open')) { // 闁嬨亜銇熸檪 GLOBAL.fixBody(true); $langToggle.addClass('is-open'); $headerLang.off('transitionend').addClass('is-active'); // 銇欍仹銇粬銇倐銇亴闁嬨亱銈屻仸銇勩倠鍫村悎銇枆銇樸倠 if ($spToggle.hasClass('is-open')) { GLOBAL.isKeepFix = true; $spToggle[0].click(); } if ($globalToggle.hasClass('is-open')) { GLOBAL.isKeepFix = true; $globalToggle[0].click(); } // 銉堛儵銉炽偢銉с兂銇曘仜銈嬨仧銈併伀閬呫倝銇涖倠 langTimer = setTimeout(function () { $headerLang.addClass('is-open'); }, 16); } else { // 闁夈仒銇熸檪 $langToggle.removeClass('is-open'); $headerLang.one('transitionend', function () { $headerLang.removeClass('is-active'); GLOBAL.fixBody(false); }).removeClass('is-open'); } }); } /* 銉樸儍銉€銉机 銈般儹銉笺儛銉儘銉冦儓銉兗銈 */ { const $header = $('.js-header'); const $global = $('.js-global'); const $globalBase = $('.js-global-base'); const $globalClose = $('.js-global-close'); // 闁嬨亸 $('.js-global-open').on('click', function () { // 銇欍仹銇枊銇勩仸銇勩倠鍫村悎銇枆銇樸倠 if ($global.hasClass('is-open')) { $globalClose[0].click(); return; } GLOBAL.fixBody(true); $header.addClass('is-global-open'); $global.off('transitionend').addClass('is-check'); $globalToggle.addClass('is-open'); // 瑕佺礌銇珮銇曘倰鍙栧緱 const height = $globalBase.outerHeight(); $global.on('transitionend', function (event) { if (event.target === event.currentTarget) { $global.off('transitionend').removeClass('is-animated').css({ height: 'auto' }); GLOBAL.sidebar && GLOBAL.sidebar.updateSticky(); } }).removeClass('is-check').addClass('is-active is-animated'); // 銉堛儵銉炽偢銉с兂銇曘仜銈嬨仧銈併伀閬呫倝銇涖倠 setTimeout(function () { $global.addClass('is-open').css({ height: height }); }, 16); }); // 闁夈仒銈 $globalClose.on('click', function () { if (!$global.hasClass('is-open')) { return; } $global.addClass('is-animated').css({ height: $globalBase.outerHeight() }); $globalToggle.removeClass('is-open'); setTimeout(function () { $global.removeClass('is-open').css({ height: '' }); $global.on('transitionend', function (event) { if (event.target === event.currentTarget) { $global.off('transitionend').removeClass('is-active is-animated'); $header.removeClass('is-global-open'); window.scrollTo(0, 0); GLOBAL.fixBody(false); GLOBAL.sidebar && setTimeout(function () { GLOBAL.sidebar.updateSticky(); }, 16); } }); }, 16); }); // 銈广優銉涘悜銇戦枊闁 let spGlobalTimer = null; $globalToggle.on('click', function () { clearTimeout(spGlobalTimer); if (!$globalToggle.hasClass('is-open')) { // 闁嬨亜銇熸檪 GLOBAL.fixBody(true); $globalToggle.addClass('is-open'); $header.addClass('is-global-open'); $global.off('transitionend').addClass('is-active').css({ height: 'auto' }); // 銇欍仹銇粬銇倐銇亴闁嬨亱銈屻仸銇勩倠鍫村悎銇枆銇樸倠 if ($spToggle.hasClass('is-open')) { GLOBAL.isKeepFix = true; $spToggle[0].click(); } if ($langToggle.hasClass('is-open')) { GLOBAL.isKeepFix = true; $langToggle[0].click(); } // 銉堛儵銉炽偢銉с兂銇曘仜銈嬨仧銈併伀閬呫倝銇涖倠 spGlobalTimer = setTimeout(function () { $global.addClass('is-open'); }, 16); } else { // 闁夈仒銇熸檪 $globalToggle.removeClass('is-open'); $global.one('transitionend', function () { $global[0].scrollTop = 0; $header.removeClass('is-global-open'); $global.removeClass('is-active'); GLOBAL.fixBody(false); }).removeClass('is-open').css({ height: '' }); } }); } /* 銉樸儍銉€銉机 銈广偗銉兗銉伀銈堛倠銉樸儍銉€銉煎浐瀹 */ { const header = $('.js-header')[0]; const $headerFix = $('.js-header-fix'); // 銈广偗銉兗銉洠瑕 let headerTimer = null; let isFixed = false; const onScroll = function () { if (window.pageYOffset <= header.offsetHeight) { // 銉樸儍銉€銉笺亴瑕嬨亪銈嬩綅缃伄鍫村悎寮峰埗鐨勩伀銈傘仺銇埢銇 $headerFix.off('transitionend').removeClass('is-fixed is-fixed-active is-fixed-slide'); isFixed = false; } else if (window.pageYOffset > window.innerHeight / 2) { // 銉樸儍銉€銉煎浐瀹 if (!isFixed) { clearTimeout(headerTimer); $headerFix.off('transitionend').addClass('is-fixed').removeClass('is-fixed-slide'); // 銉堛儵銉炽偢銉с兂銇曘仜銈嬨仧銈併伀閬呫倝銇涖倠 headerTimer = setTimeout(function () { $headerFix.addClass('is-fixed-active'); }, 16); isFixed = true; } } else if (isFixed) { // 銉樸儍銉€銉煎浐瀹氳В闄 clearTimeout(headerTimer); $headerFix.on('transitionend', function (event) { if (event.target === event.currentTarget) { $headerFix.off('transitionend').removeClass('is-fixed is-fixed-slide'); } }).addClass('is-fixed-slide').removeClass('is-fixed-active'); isFixed = false; } }; window.addEventListener('scroll', onScroll, GLOBAL.passiveOption); onScroll(); } /* 銉樸儍銉€銉机 妞滅储銉曘偅銉笺儷銉 */ { const $textField = $('.l-header-form__input'); const $textFieldSubmit = $('.l-header-form__submit'); //妞滅储銉氥兗銈搞伀銈搞儯銉炽儣銇欍倠 $textFieldSubmit.click(function(e){ e.stopPropagation(); e.preventDefault(); var inputText = $textField.val(); jumpSearchPage(inputText); }); $textField.keypress( function ( e ) { if ( e.which == 13 ) { var inputText = $(this).val(); jumpSearchPage(inputText); return false; } }) } /* 銉曘儍銈裤兗: 銉氥兗銈搞儓銉冦儣 */ { // 銈广偗銉兗銉绱 const $scElem = $(document.scrollingElement || document.documentElement); const $pagetop = $('.js-pagetop'); const bottomTrigger = $('.js-pagetop-trigger')[0]; $pagetop.find('a').on('click', function () { $scElem.animate({ scrollTop: 0 }, 400); }); // 銈广偗銉兗銉洠瑕 const onScroll = function () { const isHidden = window.pageYOffset < window.innerHeight * 2 / 3; $pagetop.toggleClass('is-hidden', isHidden); const isStatic = bottomTrigger.getBoundingClientRect().top < window.innerHeight; $pagetop.toggleClass('is-static', isStatic); }; window.addEventListener('scroll', onScroll, GLOBAL.passiveOption); onScroll(); } /* 銈点偆銉夈儛銉艰拷寰 */ { const stickyAside = $('.js-sticky-aside')[0]; if ( stickyAside !== void(0) ) { $(window).on('load resize',function(e){ let minHeight = stickyAside.clientHeight; $('.l-wrap__main')[0].style.minHeight = minHeight + 'px'; }) } if (stickyAside && typeof StickySidebar === 'function') { $('.l-wrap__aside').css({'position':"absolute"}); GLOBAL.sidebar = new StickySidebar(stickyAside, { topSpacing: 58, bottomSpacing: 20, }); window.addEventListener('load', function () { GLOBAL.sidebar.updateSticky(); }); } } /* location.hash銈掍即銇嗛伔绉 */ { $( window ).on( 'load', function() { const id = location.hash; const speed = 0; const headerHight = $('.js-header-fix').height(); if ( '' != id ) { if(id.indexOf('005.marsflag.com') < 1){ const pos = $( id ).offset().top - headerHight; $( 'html' ).animate({ scrollTop: pos }, speed ); } } $('body').addClass('is-loded'); }); } /* 銈兂銈兗銉兂銈伄琛ㄧず浣嶇疆瑾挎暣 */ { const headerHight = $('.js-header-fix').height(); $('a[href^="#"]:not(.p-news-release__tab)').click(function() { const speed = 300; const href= $(this).attr("href"); const target = $(href == "#" || href == "" ? 'html' : href); const position = target.offset().top-headerHight; $('body,html').animate({scrollTop:position}, speed, 'swing') return false; }); } /* a銈裤偘鍐呫伄銈儶銉冦偗鍒跺尽 */ { $('[data-href]').on('click',function(e){ e.stopPropagation(); e.preventDefault(); var pageUrl = $(this).attr('data-href'); if($(this).attr('target') === "_blank") { window.open(pageUrl); } else{ window.location.href = pageUrl; } }); } /* 姹庣敤銈偝銉笺儑銈c偑銉 */ { const $toggle = $('.js-accordion'); $toggle.on('click', function () { const $this = $(this); const $body = $this.parent().find('.js-accordion-body'); $this.toggleClass('is-open'); $body.stop(); if ($this.hasClass('is-open')) { $body.slideDown(300); } else { $body.slideUp(300); } }); } /* 姹庣敤銉涖儛銉笺偄銈偡銉с兂 */ { // data-parent="n" 灞炴€с仹n鍊嬩笂銇Κ瑕佺礌銇 .is-hover 銈儵銈瑰悕銈掋仱銇戙倠浜嬨亴銇с亶銇俱仚 $('.js-hover-action').on('mouseenter mouseleave', function (event) { const $this = $(this); const isHover = event.type === 'mouseenter'; $this.parents().eq(($this.data('parent') || 1) - 1).toggleClass('is-hover', isHover); }); } /* 瑷樹簨銈广儵銈ゃ儉銉 */ { // 鍓嶅緦銇瑁借绱犮伄鏁 const cloneSpan = 2; // 銈广儵銈ゃ儔銇墍瑕佹檪闁 const slideDuration = 600; // 銈兗銉堛偣銉┿偆銉夈伄闁撻殧 const sliderInterval = 5000; const zeroPad = function (num) { return ('0' + num).slice(-2); }; $('.js-article-slider').each(function () { const $slider = $(this); // 銈广儵銈ゃ儉銉兼湰浣 const $list = $slider.find('.js-article-slider__list'); // 銈儶銈搞儕銉伄銈广儵銈ゃ儔瑕佺礌 const $origItems = $list.children(); const slideLength = $origItems.length; // 銉氥兗銈搞儘銉笺偡銉с兂 const $slidePageWrapper = $slider.find('.js-article-slider__page'); for (let i = 0; i < slideLength; i++) { const $page = $('