IT/HTML & CSS

CSS 드롭다운 메뉴(gnb) 만들기

꿍짱 2024. 3. 20. 23:08
반응형

드롭다운 메뉴란?

드롭다운 메뉴는 웹 페이지에서 사용자가 메뉴 아이템을 선택할 때 추가적인 옵션들이 드롭다운 형태로 나타나는 메뉴이다. 주로 웹페이지 상단 메뉴에서 사용되며, 메뉴 항목을 클릭하거나 마우스 호버하면 하위 메뉴 항목들이 펼쳐지는 형태이다.
필자도 javascript나 JQuery에 익숙치 않을 때 많이 쓰던 방식인데, CSS로 만든다고 해서 기능이 떨어지진 않는다.

 

드롭다운 메뉴 만들기

단순히 CSS만으로는 드롭다운메뉴를 만들 수는 없다.
먼저 HTML을 작성해 준다.

<nav>
    <ul>
      <li>
        <a href="#">menu01</a>
        <ul>
          <li><a href="#">submenu1</a></li>
          <li><a href="#">submenu2</a></li>
          <li><a href="#">submenu3</a></li>
        </ul>
      </li>
      <li>
        <a href="#">menu02</a>
        <ul>
          <li><a href="#">submenu1</a></li>
          <li><a href="#">submenu2</a></li>
          <li><a href="#">submenu3</a></li>
        </ul>
      </li>
      <li>
        <a href="#">menu03</a>
        <ul>
          <li><a href="#">submenu1</a></li>
          <li><a href="#">submenu2</a></li>
          <li><a href="#">submenu3</a></li>
        </ul>
      </li>
      <li>
        <a href="#">menu04</a>
        <ul>
          <li><a href="#">submenu1</a></li>
          <li><a href="#">submenu2</a></li>
          <li><a href="#">submenu3</a></li>
        </ul>
      </li>
    </ul>
  </nav>

 

ul태그 안에 서브메뉴 ul이 있는 방식으로 만들었습니다.

다른 태그로 작성해도 큰 상관은 없습니다.

 

HTML만 작성해서는 우리가 원하는 디자인을 얻을 수 없기 때문에 CSS도 작성해 줍니다.

nav{width: 100%;max-width: 500px;}
nav ul{list-style: none;z-index: 2;}
nav a{color:#000;text-decoration: none;}
nav > ul{display: flex;width: 100%;justify-content: space-between;padding:10px;}
nav > ul > li{position: relative;}
nav > ul > li > a{font-size: 20px;font-weight: bold;padding:10px 0;}
nav > ul > li > a:hover{color:#999;}
nav > ul > li > ul{display: none; position: absolute; left:50%; transform: translateX(-50%);border:1px solid #ddd;border-radius: 6px;background: #fff;}
nav > ul > li:hover ul{display:block;}
nav > ul > li  li a{display: block; padding:10px 15px;}
nav > ul > li  li a:hover{background:#eee;}
nav > ul > li > li + li{margin-top:5px;}

 

HTML에 CSS를 입히고, ul안의 ul은 display:none;으로 작성해서 일단 화면 보이지 않게 한다.

그다음에 CSS의 hover라는 기능을 통해 li를 마우스로 호버했을 때 ul안의 ul을 보여주게 작성한다.

 

간단하게 HTML과 CSS의 작성만으로 드롭다운 메뉴를 쉽게 만들 수 있다.

코드 작성 결과는 아래에서 확인 할 수 있다.

 

See the Pen CSS드랍메뉴 by 문정현 (@wqmlgxov-the-flexboxer) on CodePen.

 

필자는 간단하게 작성했지만, 여기에 애니메이션같은 모션까지 넣어주면 더 좋을 것 같다.

이 코드를 기초로 두고 여러가지 시도를 해보는 것도 재밌을 것 같다.

 

오늘의 포스팅은 여기까지입니다.

끝까지 읽어주셔서 감사합니다

 

300x250