Menu
Coddy logo textTech

드롭다운 메뉴

Coddy HTML 여정의 Practical Frontend 섹션에 포함된 레슨 — 35개 중 20번째.

드롭다운 메뉴는 사용자가 마우스를 올리거나 포커스를 맞췄을 때 더 많은 링크를 보여주는 내비게이션 항목입니다. 드롭다운은 JavaScript를 사용하여 만들 수도 있지만, 이 장에서는 :hover 또는 :focus-within을 사용하여 숨겨진 메뉴를 나타내는 CSS 전용 방식에 집중합니다.

사용하는 이유:

  • 내비게이션 바의 공간을 절약합니다.
  • 인터페이스를 깔끔하고 체계적으로 유지합니다.
  • 적절히 조정하면 모바일 우선 및 반응형 디자인에 잘 작동합니다.

HTML:

<div class="dropdown">
  <button class="dropdown-button">Menu</button>
  <div class="dropdown-content">
    <a href="#">Option 1</a>
    <a href="#">Option 2</a>
    <a href="#">Option 3</a>
  </div>
</div>

CSS: 

// .dropdown은 position: relative로 설정됩니다. 
// 그래야 드롭다운 콘텐츠가 position: absolute를 통해 올바른 위치에 배치될 수 있습니다.
.dropdown {
  position: relative;
  display: inline-block;
}
//.dropdown-content는 display: none을 사용하여 기본적으로 숨겨집니다.
.dropdown-content {
  display: none;
  position: absolute;
}
//사용자가 .dropdown 컨테이너 위에 마우스를 올리면, 
//display: block을 사용하여 .dropdown-content가 표시됩니다.
.dropdown:hover .dropdown-content {
  display: block;
}

이 코드를 사용하면 드롭다운 컨테이너(버튼 포함) 위에 마우스를 올렸을 때 드롭다운 내용이 나타납니다.

challenge icon

챌린지

쉬움

당신에게는 "Select Color"라는 라벨이 붙은 버튼과 Red, Green, Blue라는 세 가지 옵션이 있는 드롭다운 메뉴의 HTML이 주어집니다.

당신의 작업은 다음 조건에 맞게 CSS로 드롭다운 스타일을 지정하는 것입니다:

  1. 옵션은 기본적으로 숨겨져 있어야 합니다.
  2. 사용자가 드롭다운 컨테이너에 마우스를 올리면(hover) 옵션이 보여야 합니다.

치트 시트

드롭다운 메뉴는 사용자가 마우스를 올리거나 포커스를 맞출 때 더 많은 링크를 보여줍니다. 숨겨진 메뉴를 나타내려면 :hover 또는 :focus-within을 사용하세요.

HTML 구조:

<div class="dropdown">
  <button class="dropdown-button">Menu</button>
  <div class="dropdown-content">
    <a href="#">Option 1</a>
    <a href="#">Option 2</a>
    <a href="#">Option 3</a>
  </div>
</div>

CSS 구현:

.dropdown {
  position: relative;
  display: inline-block;
}

.dropdown-content {
  display: none;
  position: absolute;
}

.dropdown:hover .dropdown-content {
  display: block;
}

드롭다운 컨테이너는 position: relative를 사용하여 드롭다운 콘텐츠가 position: absolute로 배치될 수 있도록 합니다. 콘텐츠는 기본적으로 display: none으로 숨겨져 있으며, 호버 시 display: block으로 표시됩니다.

직접 해보기

<!DOCTYPE html>
<html>
<head>
  <title>Dropdown menu</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      padding: 50px;
      background-color: #f0f0f0;
    }

    .dropdown {
      position: relative;
      display: inline-block;
    }

    .dropdown-button {
      padding: 10px 20px;
      font-size: 16px;
      cursor: pointer;
      border: 1px solid #333;
      border-radius: 5px;
      background-color: #ffffff;
    }

    .dropdown-content {
      position: absolute;
      top: 100%;
      left: 0;
      background-color: #ffffff;
      min-width: 160px;
      border: 1px solid #ccc;
      border-radius: 5px;
      box-shadow: 0 2px 5px rgba(0,0,0,0.2);
      z-index: 1;
    }

    .dropdown-content a {
      display: block;
      padding: 10px;
      text-decoration: none;
      color: #333;
    }

    .dropdown-content a:hover {
      background-color: #f2f2f2;
    }

    /* Show dropdown on hover or focus */
    .dropdown:hover .dropdown-content,
    .dropdown:focus-within .dropdown-content {

    }
  </style>
</head>
<body>

  <div class="dropdown">
    <button class="dropdown-button">Select Color</button>
    <div class="dropdown-content">
      <a href="#">Red</a>
      <a href="#">Green</a>
      <a href="#">Blue</a>
    </div>
  </div>

</body>
</html>
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Practical Frontend의 모든 레슨