한 걸음씩
[JS] 반응형 Navbar, Sidebar 만들기 본문
[Navbar 요구사항]
브라우저 크기를 줄였을 때 menu아이콘이 나타나고
menu아이콘을 눌렀을 때 메뉴창이 등장하면서 메뉴들이 세로로 정렬되어 나타남.
menu아이콘을 눌렀을 때 메뉴 창이 사라짐
// index.html
<body>
<nav>
<div class="title">Coding<span>Addict</span></div>
<div class="menu1">
<a href="./Index.html">Home</a>
<a>About</a>
<a>Projects</a>
<a>Contact</a>
</div>
<div class="social-link">
<a href="https://ko-kr.facebook.com/"><img src="./images/facebook.png" alt=""></a>
<a href="https://www.instagram.com/"><img src="./images/instagram.png" alt=""></a>
<a href="https://kr.linkedin.com/"><img src="./images/linkedin.png" alt=""></a>
<a href="https://www.pinterest.co.kr/"><img src="./images/pinterest.png" alt=""></a>
<a href="https://twitter.com/i/flow/login?redirect_after_login=%2F%3Flang%3Dko"><img src="./images/twitter.png" alt=""></a>
</div>
<!-- menu bar 만들어서 menu -->
<div class="menu2 menu-hidden">
<span class="material-symbols-outlined menu-icon">menu</span>
</div>
</nav>
<div class="scroll-menu hidden">
<a href="./Index.html">Home</a>
<a>About</a>
<a>Projects</a>
<a>Contact</a>
</div>
<script src="app.js"></script>
</body>
// app.js
const scrollMenu = document.querySelector('.scroll-menu')
const menuIcon = document.querySelector('.menu-icon')
function onScrollMenu(){
scrollMenu.classList.toggle('hidden')
}
menuIcon.addEventListener('click', onScrollMenu)
CSS 파일에서 브라우저 크기를 미디어 쿼리를 사용하여 800px 두고 설정값을 나눠줬는데
800px이 되면 기존의 navbar가 사라지고 menu아이콘이 나타나서
menu 아이콘을 눌렀을 때 세로로 메뉴들이 정렬되도록 구현하였다.
display:none;으로 설정한 hidden 클래스를 두고
HTML 파일에서 필요한 부분에 hidden 클래스를 작성해서
JS에서 toggle을 하여 조절하였다
[Sidebar 요구사항]
menu 아이콘을 눌렀을 때 사이드에서
메뉴가 세로로 정렬되어 나타나고
x 표시를 눌렀을 때 사이드 창이 사라짐
// index.html
<body>
<span class="material-symbols-outlined menu">menu</span>
<div class="side-bar hidden">
<div>
<h1 class="title">Coding <span>Addict</span></h1>
<span class="material-symbols-outlined close-icon">close</span>
<p>Home</p>
<p>About</p>
<p>Projects</p>
<p>Contact</p>
</div>
<div class="social-link">
<a href="https://ko-kr.facebook.com/"><img src="./images/facebook.png" alt=""></a>
<a href="https://www.instagram.com/"><img src="./images/instagram.png" alt=""></a>
<a href="https://kr.linkedin.com/"><img src="./images/linkedin.png" alt=""></a>
<a href="https://www.pinterest.co.kr/"><img src="./images/pinterest.png" alt=""></a>
<a href="https://twitter.com/i/flow/login?redirect_after_login=%2F%3Flang%3Dko"><img src="./images/twitter.png" alt=""></a>
</div>
</div>
<script src="app.js"></script>
</body>
위에서 구현한 navbar와 같은 방식인데 display: none;을 가진 hidden클래스를 두고
JS에서 toggle하여 menu 아이콘을 클릭할 때마다 사이드 바 메뉴를 열었다 닫았다 할 수 있도록 구현하였다.
// app.js
const menuBtn = document.querySelector('.menu')
const sideBar = document.querySelector('.side-bar')
const closeBtn = document.querySelector('.close-icon')
function onClickSidebar(){
sideBar.classList.toggle('hidden')
}
function onClickCloseBtn(){
sideBar.classList.add('hidden')
}
closeBtn.addEventListener('click', onClickCloseBtn)
menuBtn.addEventListener('click', onClickSidebar)
'JS' 카테고리의 다른 글
[JS] Modal 만들기 (0) | 2023.07.10 |
---|---|
[JS] FAQ(자주 묻는 질문) 페이지 만들기 ✅ (0) | 2023.07.10 |
[JS] Carousel 만들기 (0) | 2023.07.06 |
[JS] Number Counter 만들기 (0) | 2023.07.06 |
[JS] Random Color 2 - color flipper 만들기 (0) | 2023.07.06 |