클릭 드롭다운 리스트 구현하기

  • 5 minutes to read

이 아티클에서는 HTML, CSS, JavaScript를 활용하여 클릭으로 작동하는 간단한 드롭다운 리스트를 만들어보겠습니다. 드롭다운 리스트는 사용자가 버튼을 클릭할 때 나타나고, 리스트 외부를 클릭하면 자동으로 닫히는 구조를 가지고 있습니다. 이와 같은 드롭다운 기능은 내비게이션 메뉴, 설정 옵션 등 다양한 곳에서 유용하게 활용됩니다.

이 아티클의 업그레이드된 버전 강좌는 다음 링크를 참고하세요.

순수한 HTML, CSS, JavaScript로 드롭다운 리스트 만들기

1. 드롭다운 리스트의 전체 코드

아래는 HTML, CSS, JavaScript로 구성된 드롭다운 리스트의 완성된 코드입니다. 이 코드는 클릭으로 메뉴가 열리고, 외부 클릭 시 자동으로 닫히도록 동작합니다.

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>클릭 드롭다운 리스트</title>
  <style>
    /* 드롭다운 버튼 스타일 */
    .dul-btn {
      background-color: #3498DB;
      color: white;
      padding: 16px;
      font-size: 16px;
      border: none;
      cursor: pointer;
    }

    .dul-btn:hover, .dul-btn:focus {
      background-color: #2980B9;
    }

    /* 드롭다운 컨테이너 */
    .dul-dropdown {
      position: relative;
      display: inline-block;
    }

    /* 드롭다운 내용 */
    .dul-dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      overflow: auto;
      box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
      z-index: 1;
    }

    /* 드롭다운 링크 스타일 */
    .dul-dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }

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

    /* 드롭다운이 열렸을 때 표시 */
    .dul-show {
      display: block;
    }
  </style>
</head>
<body>

  <!-- 드롭다운 버튼과 리스트 -->
  <div class="dul-dropdown">
    <button onclick="dulToggleDropdown()" class="dul-btn">Dropdown</button>
    <div id="dulDropdownContent" class="dul-dropdown-content">
      <a href="#home">Home</a>
      <a href="#about">About</a>
      <a href="#contact">Contact</a>
    </div>
  </div>

  <script>
    /* 드롭다운 열고 닫기 함수 */
    function dulToggleDropdown() {
      document.getElementById("dulDropdownContent").classList.toggle("dul-show");
    }

    // 드롭다운 외부를 클릭하면 리스트 닫기
    window.onclick = function(event) {
      if (!event.target.matches('.dul-btn')) {
        var dropdowns = document.getElementsByClassName("dul-dropdown-content");
        for (var i = 0; i < dropdowns.length; i++) {
          var openDropdown = dropdowns[i];
          if (openDropdown.classList.contains('dul-show')) {
            openDropdown.classList.remove('dul-show');
          }
        }
      }
    }
  </script>

</body>
</html>

2. 코드 설명

(1) HTML 구조

  • <div class="dul-dropdown">: 드롭다운 전체를 감싸는 컨테이너입니다.
  • <button>: 사용자가 클릭하는 버튼입니다. 버튼을 클릭하면 드롭다운 리스트가 나타나도록 설계했습니다.
  • <div class="dul-dropdown-content">: 드롭다운에 표시될 리스트 항목입니다. 링크 형태로 구성하여 클릭 시 다른 페이지로 이동할 수 있습니다.

(2) CSS 스타일

  • 버튼 스타일: dul-btn 클래스는 버튼의 배경색과 폰트 크기, 패딩을 설정합니다. 마우스를 올리거나 클릭하면 배경색이 변하도록 호버 효과도 추가했습니다.
  • 드롭다운 리스트 스타일: dul-dropdown-content 클래스는 드롭다운의 기본 상태를 display: none으로 설정해 숨겨 둡니다. 드롭다운이 열리면 dul-show 클래스가 추가되어 display: block으로 전환됩니다.
  • 드롭다운 항목: 각 링크에 마우스를 올리면 배경색이 변하도록 설정해 시각적 피드백을 제공합니다.

(3) JavaScript 기능

  1. dulToggleDropdown(): 버튼을 클릭하면 드롭다운 리스트의 표시 여부를 토글(toggle)합니다.
  2. 외부 클릭 시 닫기 기능:
    • window.onclick 이벤트를 사용하여 페이지 어디든 클릭했을 때 발생하도록 설정했습니다.
    • 클릭한 대상이 드롭다운 버튼이 아닌 경우, 열린 드롭다운 리스트를 모두 닫습니다.

3. 동작 방식

  1. 사용자가 "Dropdown" 버튼을 클릭하면, 드롭다운 리스트가 열립니다.
  2. 사용자가 드롭다운 외부를 클릭하면, 리스트가 자동으로 닫힙니다.
  3. 리스트 내의 항목을 클릭하면 해당 링크로 이동할 수 있습니다.

4. 결론

이와 같은 클릭 드롭다운 리스트는 웹사이트에서 사용자 경험을 개선하는 데 큰 역할을 합니다. 간단한 내비게이션 메뉴부터 설정 옵션에 이르기까지 다양한 곳에 적용할 수 있습니다. 이번 예제에서는 기본적인 구조와 스타일을 적용했지만, 필요에 따라 CSS와 JavaScript를 확장하여 더욱 정교하게 커스터마이즈할 수 있습니다.

이제 이 코드를 기반으로 자신의 프로젝트에 맞게 응용해 보세요!

더 깊이 공부하고 싶다면
DevLec에서는 실무 중심의 C#, .NET, ASP.NET Core, Blazor, 데이터 액세스 강좌를 단계별로 제공합니다. 현재 수강 가능한 강좌 외에도 더 많은 과정이 준비되어 있습니다.
DevLec.com에서 자세한 커리큘럼을 확인해 보세요.
DevLec 공식 강의
C# Programming
C# 프로그래밍 입문
프로그래밍을 처음 시작하는 입문자를 위한 C# 기본기 완성 과정입니다.
ASP.NET Core 10.0
ASP.NET Core 10.0 시작하기 MVC Fundamentals Part 1 MVC Fundamentals Part 2
웹 애플리케이션의 구조와 MVC 패턴을 ASP.NET Core로 실습하며 익힐 수 있습니다.
Blazor Server
풀스택 웹개발자 과정 Part 1 풀스택 웹개발자 과정 Part 2 풀스택 웹개발자 과정 Part 3
실무에서 바로 활용 가능한 Blazor Server 기반 관리자·포털 프로젝트를 만들어 봅니다.
Data & APIs
Entity Framework Core 시작하기 ADO.NET Fundamentals Blazor Server Fundamentals Minimal APIs
데이터 액세스와 Web API를 함께 이해하면 실무 .NET 백엔드 개발에 큰 도움이 됩니다.
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com