반응형 웹에서 네비게이션 메뉴는 작은 화면에서도 쉽게 접근할 수 있어야 합니다.
이 글에서는 JavaScript를 활용해 햄버거 메뉴를 구현하는 방법을 단계별로 설명합니다.
모바일·태블릿·데스크톱까지 유연하게 대응하는 반응형 메뉴 제작 실습을 통해 실무에서 바로 활용 가능한 팁을 배워보세요.
반응형 메뉴가 필요한 이유
- 모바일 사용자 증가 → 화면 공간이 제한적이므로 숨김 메뉴 필수
- 접근성 향상 → 작은 화면에서도 손쉽게 탐색 가능
- UI 일관성 → 하나의 코드로 모든 해상도에서 동일한 UX 제공 가능
💡 Tip: 반응형 메뉴는 햄버거 버튼 + 숨겨진 메뉴 구조가 가장 일반적이며, 간결하고 직관적입니다.
기본 HTML 구조
<nav class="navbar">
<div class="logo">MySite</div>
<button class="menu-toggle" aria-label="메뉴 열기">☰</button>
<ul class="nav-links">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
HTML.menu-toggle
→ 햄버거 버튼 역할.nav-links
→ 숨겨졌다가 나타나는 네비게이션 메뉴
CSS 스타일링
/* 기본 레이아웃 */
.navbar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 15px 20px;
background: #333;
color: #fff;
}
.nav-links {
display: flex;
gap: 20px;
list-style: none;
}
.nav-links a {
color: #fff;
text-decoration: none;
}
/* 모바일 초기 상태 */
.menu-toggle {
display: none;
font-size: 24px;
background: none;
border: none;
color: #fff;
cursor: pointer;
}
@media (max-width: 768px) {
.menu-toggle {
display: block;
}
.nav-links {
position: absolute;
top: 60px;
left: 0;
width: 100%;
flex-direction: column;
background: #444;
display: none;
padding: 10px 0;
}
.nav-links.show {
display: flex;
}
}
CSS📝 설명:
- 데스크톱 화면 → 메뉴 항상 보임 (
flex
)- 모바일 화면 → 메뉴 기본
display: none
.show
클래스 추가 시 메뉴가 나타남
JavaScript로 메뉴 토글 구현
const toggleBtn = document.querySelector('.menu-toggle');
const navLinks = document.querySelector('.nav-links');
toggleBtn.addEventListener('click', () => {
navLinks.classList.toggle('show');
});
JavaScript📱 RAO 팁:
classList.toggle()
을 사용하면 코드가 간결해지고 유지보수가 쉬워집니다.
접근성 향상 (A11y)
toggleBtn.addEventListener('click', () => {
const expanded = toggleBtn.getAttribute('aria-expanded') === 'true';
toggleBtn.setAttribute('aria-expanded', !expanded);
navLinks.classList.toggle('show');
});
JavaScriptaria-expanded
속성을 업데이트하여 스크린 리더가 메뉴 상태를 인식 가능하게 만듦.
💡 실무 팁: 접근성을 고려한 ARIA 속성 추가는 SEO와 사용자 경험 모두에 도움을 줍니다.
완성된 구조 동작
- 데스크톱 → 메뉴가 항상 보이고 햄버거 버튼은 숨김
- 모바일/태블릿 → 햄버거 버튼 클릭 시 메뉴 표시/숨김
- 접근성 보장 → 스크린 리더 및 키보드 탐색 지원
예제 구현
마무리
JavaScript를 활용한 반응형 네비게이션 메뉴는 작은 화면에서도 사용성을 보장하며, Grid·Flexbox와 조합하면 더욱 완벽한 반응형 레이아웃을 구성할 수 있습니다.
실무에서는 접근성까지 고려해 구현하면 사용자 만족도를 크게 높일 수 있습니다.
Summary in English
Learn how to create a fully responsive navigation menu using JavaScript.
From hamburger menu design to accessibility enhancements, this guide covers everything you need for mobile and desktop compatibility.
- 👉 CSS와 JS로 완성하는 반응형 UI 구현 가이드|실무 예시 모음집
- 👉 웹 개발자 키보드 선택 가이드 2025
- 👉 웹 개발자 모니터 선택 가이드 2025
- 🚀 쿠팡에서 맥북에어 구매하고, UI 개발자 커리어 시작하기!
“이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.”