/* * Name : common.js * Version : 1.0 * Author : onepixel studio --------------------------------------------------- */ $(function() { // 전역변수 const header = $('#header'); const scrollTopButton = $('#btn-to-top'); // 초기화 filtering_index(); navbar_init(); footer_init(); // 메인, 서브 구분 (절대 수정 및 삭제 금지) function filtering_index() { const divider = document.getElementById('isIndex'); const tplCode = document.getElementById('tplCode').value; let addJS = ''; let addCSS = ''; if ( divider && divider.value == 'Y' ) { if ( !document.getElementById('mjs') && !document.getElementById('mcss') ) { addJS = document.createElement('script'); addJS.id = 'mjs'; addJS.src = tplCode + '/img/onepixel/js/main.min.js'; addCSS = document.createElement('link'); addCSS.id = 'mcss'; addCSS.rel = 'stylesheet'; addCSS.href = tplCode + '/img/onepixel/css/main.css'; document.head.appendChild(addCSS); document.head.appendChild(addJS); } } else { if ( !document.getElementById('sjs') && !document.getElementById('scss') ) { addJS = document.createElement('script'); addJS.id = 'sjs'; addJS.src = tplCode + '/img/onepixel/js/sub.min.js'; addCSS = document.createElement('link'); addCSS.id = 'scss'; addCSS.rel = 'stylesheet'; addCSS.href = tplCode + '/img/onepixel/css/sub.css'; document.head.appendChild(addCSS); document.head.appendChild(addJS); } } } // 헤더 초기화 function navbar_init() { const menuItems = $('#header .gnb > ul > li'); const megamenuBg = $('#header .megamenu-bg'); const hamburger = $('#header .button-hamburger'); const backdrop = $('#mobile-header .backdrop'); let bgHeight = 0; megamenuBg.height(0); menuItems.each(function () { let $this = $(this); if ( $this.find('>.submenu-items').outerHeight() >= bgHeight ) { bgHeight = $this.find('>.submenu-items').outerHeight(); } }); menuItems.on('mouseenter', function() { header.addClass('active'); gsap.to('#header .megamenu-bg', { autoAlpha: 1, height: bgHeight, duration: 0.3 }); $('#header .submenu-items').stop().fadeIn(400); }); $('#header .gnb').on('mouseleave', function() { header.removeClass('active'); $('#header .submenu-items').stop().fadeOut(100); gsap.to('#header .megamenu-bg', { autoAlpha: 0, height: 0, duration: 0.3 }); }); hamburger.on('click', (e) => { let $this = $(e.currentTarget); $this.attr('aria-expanded', function(i, attr) { return attr == 'true' ? 'false' : 'true' }); $this.toggleClass('active'); header.toggleClass('nav-open'); backdrop.stop().fadeToggle(400); }); $('#mobile-header .inner-content > ul > li > a').on('click', (e) => { let $this = $(e.currentTarget); if ( $this.siblings('.submenu-items').length ) { e.preventDefault(); if ( !$this.parent().hasClass('open') ) { $('#mobile-header .inner-content > ul > li').removeClass('open'); $('#mobile-header .inner-content > ul > li .submenu-items').stop().slideUp(300); $this.parent().addClass('open'); $this.siblings('.submenu-items').stop().slideDown(300); } else { $this.parent().removeClass('open'); $this.siblings('.submenu-items').stop().slideUp(300); } } }); } // 스티키 네비게이션 function sticky_navbar() { let st = $(window).scrollTop(); if ( st >= 100 ) { header.addClass('sticky'); } else { header.removeClass('sticky'); } } // 로딩 인디케이터 처리 (페이지 로드 이후 페이드아웃) function page_load_complete() { const loader = $('#page-loader'); loader.find('.loader-stage').fadeOut('slow', () => { setTimeout(() => { loader.fadeOut('slow'); }, 100); }); } $(window).on('scroll', function() { floating_init(); }).scroll(); function floating_init() { let $st = $(window).scrollTop(); var $floating_btn = $('#floating-btn'); var $trigger_height = 0; if ( $st >= $trigger_height ) { $floating_btn.addClass('show'); } else { $floating_btn.removeClass('show'); } } // 푸터 초기화 function footer_init() { const dropdownWrapper = $('#footer .family-site-wrapper'); const dropdownButton = dropdownWrapper.find('.button-opener'); const dropdown = dropdownWrapper.find('.family-dropdown-items'); dropdownWrapper.find('.scroll-content').niceScroll({ autohidemode : false, cursorborder : "0px solid #7a7a7a", cursorcolor : "#7a7a7a", background : "#dee2e6", cursorwidth : "4px", railwidth : 4, cursorborderradius : "5px", zindex : 1, railoffset : { top: 0, left: -1, }, railpadding : { top: 0, right: 0, left: 0, bottom: 1 } }); dropdownButton.on('click', (e) => { let $this = $(e.currentTarget); if ( !dropdownWrapper.hasClass('--open') ) { dropdownWrapper.addClass('--open'); dropdown.stop().slideDown(300); dropdownWrapper.find('.scroll-content').getNiceScroll().resize(); } else { dropdownWrapper.removeClass('--open'); dropdown.stop().slideUp(300); } }); $(document).on('click', (e) => { if ( !$(e.target).is(dropdownButton) ) { dropdownWrapper.removeClass('--open'); dropdown.stop().slideUp(300); } }); scrollTopButton.on('click', () => { $('html, body').stop().animate({scrollTop: 0}, 500); }); } // 맨 위로 버튼 보이기/숨기기 function footer_button_toggle() { let st = $(window).scrollTop(); let wh = $(window).height(); // if ( st >= wh ) { // scrollTopButton.addClass('--show'); // } else { // scrollTopButton.removeClass('--show'); // } } $(window).on('load', () => { page_load_complete(); }); $(window).on('resize', () => { navbar_init(); }); $(window).on('scroll', () => { sticky_navbar(); footer_button_toggle(); }); });