-
자바스크립트 (JavaScript) https://codepen.io/kimyangsun/pen/XWZdPbL
자바스크립트 header gnb 탑메뉴 예제 2 (PC & 모바일)
...
codepen.io
자바스크립트 header gnb 탑메뉴 예제 2 (PC & 모바일) 코드펜 소스코드입니다.
이것도 탑메뉴 중에서 자주 쓰이는 형태중 하나입니다.
이건 3차메뉴까지 존재하는 경우인데 이런형식으로 작업하기에 예제를 만들어두면 좋을거 같아서 코드를 짰습니다.
물론 웹접근성도 준수하는 코드로 제작하였습니다. (ex : 키보드 접근성)
이 형태는 3차메뉴까지 보여줘야 하기에 반응형 1240px 에서 모바일 토글버튼으로 변하게 작업된 상태입니다.
그래서 현재 블로그 게시글에서는 너비가 작아 모바일 형태로 보이네요 ㅎㅎ..
자세히 확인하시려면 새창으로 들어가서 화면을 조절해가며 확인하면 될 거 같습니다. :)
// 헤더 gnb 스크립트let header = $('.header');const DEFAULT_HEADER_HEIGHT = 90;const DURATION = 500;initGnb(header);function initGnb(header) {let gnb = header.find('.header-gnb');let gnbMenu = gnb.find('.gnb-depth-1 .depth-1');let gnbMenuLink = gnb.find('.gnb-depth-1 .depth-1 > a');let depthItem = gnb.find('.depth-item');header.on('mouseleave', function(){gnbClose(header, depthItem);})gnbMenu.on('mouseenter focusin', function(){$(this).addClass('current');});gnbMenu.on('mouseleave focusout', function(){$(this).removeClass('current');});gnbMenuLink.on('mouseenter focusin', function(){let otherItems = $('.header-gnb .depth-item');let item = $(this).siblings('.depth-item');otherItems.hide().css('opacity', '0');gnbOpen(header, item);});gnbMenu.find('a').last().on('focusout', function(){gnbClose(header, depthItem);});function gnbOpen(header, item){let itemHeight = calculateMaxHeight(item);let headerHeight = itemHeight + DEFAULT_HEADER_HEIGHT;header.stop().animate({height: headerHeight,}, DURATION);item.show().stop().animate({opacity:1,}, DURATION);header.addClass('open');}function gnbClose(header, item){header.stop().animate({height: DEFAULT_HEADER_HEIGHT,}, 0);header.removeClass('open');item.hide().css('opacity', '0');}function calculateMaxHeight(item){let height = item.outerHeight(true);return height;}}// 모바일 헤더 gnb 스크립트let mobileGnb = $('.mobile-gnb');initMobileGnb(mobileGnb);function initMobileGnb(mobileGnb){let html = $('html');let sidebarButton = mobileGnb.find('.sidebar-btn');let mobileMenu = mobileGnb.find('.depth-1 a');sidebarButton.on('click', function(){if (mobileGnb.hasClass('open')) {mobileGnbClose(mobileGnb);} else {mobileGnbOpen(mobileGnb);}});mobileMenu.on('click', function(){let thisLink = $(this);onClickMobileMenu(thisLink);});function mobileGnbOpen(gnb){gnb.addClass('open');html.addClass('not-scroll');}function mobileGnbClose(gnb){gnb.removeClass('open');html.removeClass('not-scroll');}function onClickMobileMenu(link){let target = link.parent();let depthTarget = link.siblings('ul');let otherLinks = target.siblings('li');let otherItems = otherLinks.find('ul');if (target.hasClass('current')){target.removeClass('current');depthTarget.stop().slideUp(300);} else {otherLinks.removeClass('current');otherItems.stop().slideUp(300);target.addClass('current');depthTarget.stop().slideDown(300);}}}자바스크립트 header gnb 탑메뉴 예제 1 (PC & 모바일)
See the Pen header gnb 탑메뉴 예제 1 (자체 커스텀 코드) by kimyangsun (@kimyangsun) on CodePen. https://codepen.io/kimyangsun/pen/BaYKPXm 자바스크립트 header gnb 탑메뉴 예제 1 (PC & 모바일) ... codepen.io 자바스크립트 header
kimyang-sun.tistory.com
자바스크립트 header gnb 탑메뉴 예제 3 (PC & 모바일)
See the Pen 자바스크립트 header gnb 탑메뉴 예제 3 (PC & 모바일) by kimyangsun (@kimyangsun) on CodePen. https://codepen.io/kimyangsun/pen/YzjJgLL 자바스크립트 header gnb 탑메뉴 예제 3 (PC & 모바일) ... codepen.io 자바스크립
kimyang-sun.tistory.com
kimyang-Sun노력하는 사람
'코딩 기록 > 코딩 소스 [HTML & CSS & JS]' 카테고리의 다른 글
자바스크립트 제이쿼리 셀렉트 박스 드롭다운 기능 (Javascript Selectbox Dropdown) (0) 2023.02.16 자바스크립트 제이쿼리 header gnb 탑메뉴 예제 3 (PC & 모바일) (1) 2023.02.01 자바스크립트 제이쿼리 header gnb 탑메뉴 예제 1 (PC & 모바일) (0) 2023.01.28 자바스크립트 제이쿼리 video 태그 동영상 재생 정지 상호작용 버튼 기능 (0) 2023.01.28 자바스크립트 제이쿼리 모바일 사이드 메뉴 예제 (jQuery Mobile Sidebar) (0) 2023.01.28