위와 같은 느낌의 드롭다운 메뉴바를 구현해보았다
드롭다운 메뉴바 자체의 코드가 어려운 것은 아니었지만
1. 각 메뉴별로 submenu 개수가 달라도 밑에 빈 공간이 생기지 않고
2. 위에서 아래로 내려오는 애니메이션 효과
가 되는 드롭다운 메뉴바를 구현하고 싶어서 좀 더 찾아보았다
HTML 코드
<nav class="navigation">
<ul>
<li>
<a href="">소개</a>
<ul class="submenu">
<li><a href="">행사개요</a></li>
<li><a href="">일정표</a></li>
<li><a href="">오시는길</a></li>
</ul>
</li>
<li>
<a href="">라인업</a>
<ul class="submenu">
<li><a href="">MAIN STAGE</a></li>
<li><a href="">SUB STAGE</a></li>
</ul>
</li>
<li>
<a href="">프로그램</a>
<ul class="submenu">
<li><a href="">MAIN STAGE</a></li>
<li><a href="">SUB STAGE</a></li>
<li><a href="">체험 프로그램</a></li>
</ul>
</li>
<li>
<a href="">갤러리</a>
<ul class="submenu">
<li><a href="">SMF 2022</a></li>
<li><a href="">SMF 2021</a></li>
<li><a href="">SMF 2020</a></li>
<li><a href="">SMF 2019</a></li>
</ul>
</li>
<li>
<a href="">커뮤니티</a>
<ul class="submenu">
<li><a href="">공지사항</a></li>
<li><a href="">문의하기</a></li>
<li><a href="">FAQ</a></li>
</ul>
</li>
</ul>
</nav>
HTML 코드는 그냥 보통의 드롭다운 메뉴바 형식으로 작성해주면 된다
CSS 코드
.navigation {
background-color: #1e192c;
width: 100vw;
position: fixed;
color: white;
margin-top: 10px;
text-align: center;
z-index: 10;
}
.navigation>ul {
width: 100vw;
display: flex;
flex-direction: row;
align-items: center;
}
.navigation>ul>li:hover .submenu {
max-height: 100vh;
}
.submenu {
max-height: 0;
overflow: hidden;
display: flex;
flex-direction: column;
align-items: center;
position: absolute;
transition: 0.5s ease-in-out;
}
너무 길어져서 필요한 부분만 잘랐다
transition 효과를 주기 위해서는 변화하는 값이 연속적이어야 하기 때문에
display:none; → display:block 이나 visibility:hidden; → visibility:visible; 로 변화할 때는 자연스럽게 값이 바뀌지 않는다
검색해보니 max-height를 이용하면 연속적으로 값을 변화시킬 수 있었다
따라서 submenu의 max-height를 0으로 맞춰두고, 마우스를 올렸을 때 max-height를 드롭다운 메뉴의 최대값 이상이 되게끔 맞춰주면 된다
'Programing > HTML, CSS, JS' 카테고리의 다른 글
[JavaScript / jQuery] 웹페이지에 실시간으로 연월일 날짜, 시간 띄우기 (0) | 2023.12.10 |
---|---|
[CSS] input 요소 focus 시 외곽선 스타일 변경이 안 되는 문제 (0) | 2023.12.09 |
[JavaScript / jQuery] 이미지 슬라이더(캐러셀) 구현하기 (0) | 2023.12.03 |
width: 100% 인데도 가로 스크롤바가 생기는 문제 (0) | 2023.11.28 |
[HTML / CSS] 회원가입 폼 만들기 (0) | 2023.10.19 |