How do you create a drop-down menu in HTML?

A drop-down menu in HTML allows users to select from a list of options that appears when clicked or hovered. HTML provides native support through the <select> and <option> elements, while custom implementations using HTML, CSS, and JavaScript offer greater design flexibility and advanced functionality.

Methods for Creating Drop-down Menus

There are two primary approaches to create drop-down menus in HTML

  • Using native HTML elements The <select> and <option> elements

  • Custom implementation Using HTML, CSS, and JavaScript for advanced styling and functionality

Using the Select and Option Elements

The <select> element creates a native HTML drop-down menu container, while <option> elements define individual menu items. This approach is simple, accessible, and works consistently across all browsers without requiring additional styling or scripting.

Syntax

<select name="selectName" id="selectId">
   <option value="value1">Display Text 1</option>
   <option value="value2" selected>Display Text 2</option>
   <option value="value3">Display Text 3</option>
</select>

Example Basic Select Dropdown

<!DOCTYPE html>
<html>
<head>
   <title>Basic Select Dropdown</title>
</head>
<body style="font-family: Arial, sans-serif; padding: 20px;">
   <h2>Choose Your Favorite Language</h2>
   <form>
      <label for="languages">Select a language:</label>
      <select name="languages" id="languages">
         <option value="">-- Please choose an option --</option>
         <option value="html">HTML</option>
         <option value="css">CSS</option>
         <option value="javascript" selected>JavaScript</option>
         <option value="python">Python</option>
         <option value="java">Java</option>
      </select>
   </form>
</body>
</html>

The above code creates a native dropdown with "JavaScript" pre-selected. Users can click to view and select other options.

Example Grouped Options

The <optgroup> element groups related options together

<!DOCTYPE html>
<html>
<head>
   <title>Grouped Select Options</title>
</head>
<body style="font-family: Arial, sans-serif; padding: 20px;">
   <h2>Select a Course</h2>
   <label for="courses">Choose from categories:</label>
   <select name="courses" id="courses">
      <optgroup label="Frontend">
         <option value="html">HTML5</option>
         <option value="css">CSS3</option>
         <option value="js">JavaScript</option>
      </optgroup>
      <optgroup label="Backend">
         <option value="php">PHP</option>
         <option value="python">Python</option>
         <option value="nodejs">Node.js</option>
      </optgroup>
   </select>
</body>
</html>

The grouped options are visually separated with category labels, making it easier for users to find the desired option.

Custom Implementation using HTML, CSS, and JavaScript

Custom drop-down menus provide complete control over styling and behavior. This approach uses standard HTML elements like <div>, <button>, and <ul> combined with CSS for styling and JavaScript for interactivity.

Example Custom Styled Dropdown

<!DOCTYPE html>
<html>
<head>
   <title>Custom Dropdown Menu</title>
   <style>
      .dropdown {
         position: relative;
         display: inline-block;
         width: 200px;
      }
      .dropdown-btn {
         background-color: #3498db;
         color: white;
         padding: 12px 20px;
         border: none;
         cursor: pointer;
         width: 100%;
         text-align: left;
         border-radius: 4px;
      }
      .dropdown-btn:hover {
         background-color: #2980b9;
      }
      .dropdown-content {
         display: none;
         position: absolute;
         background-color: white;
         min-width: 100%;
         box-shadow: 0px 8px 16px rgba(0,0,0,0.2);
         z-index: 1;
         border-radius: 4px;
      }
      .dropdown-content li {
         list-style: none;
         color: black;
         padding: 12px 16px;
         cursor: pointer;
         border-bottom: 1px solid #f1f1f1;
      }
      .dropdown-content li:hover {
         background-color: #f1f1f1;
      }
      .dropdown-content ul {
         margin: 0;
         padding: 0;
      }
      .show {
         display: block;
      }
   </style>
</head>
<body style="font-family: Arial, sans-serif; padding: 20px;">
   <h2>Custom Dropdown Example</h2>
   <div class="dropdown">
      <button class="dropdown-btn" id="dropdownBtn">Select an option ?</button>
      <div class="dropdown-content" id="dropdownContent">
         <ul>
            <li onclick="selectOption('HTML')">HTML</li>
            <li onclick="selectOption('CSS')">CSS</li>
            <li onclick="selectOption('JavaScript')">JavaScript</li>
            <li onclick="selectOption('Python')">Python</li>
         </ul>
      </div>
   </div>

   <script>
      // Toggle dropdown visibility
      document.getElementById("dropdownBtn").addEventListener("click", function() {
         document.getElementById("dropdownContent").classList.toggle("show");
      });

      // Handle option selection
      function selectOption(option) {
         document.getElementById("dropdownBtn").textContent = option + " ?";
         document.getElementById("dropdownContent").classList.remove("show");
      }

      // Close dropdown when clicking outside
      window.addEventListener("click", function(event) {
         if (!event.target.matches('.dropdown-btn')) {
            var dropdowns = document.getElementsByClassName("dropdown-content");
            for (var i = 0; i < dropdowns.length; i++) {
               dropdowns[i].classList.remove("show");
            }
         }
      });
   </script>
</body>
</html>

This custom dropdown features hover effects, smooth transitions, and complete styling control. Clicking outside the dropdown automatically closes it.

Dropdown Menu Approaches Native HTML Select ? Simple implementation ? Built-in accessibility ? Form-friendly ? Limited styling ? Browser-consistent Custom Implementation ? Full design control ? Advanced interactions ? Multi-level support ? More complex code ? Requires JavaScript

Types of Dropdown Menus

Basic Single-Level Dropdown

A basic dropdown presents a simple list of options. It uses either native HTML <select> elements or custom implementations with a single level of choices.

Multi-Level Dropdown Menu

Multi-level dropdowns feature nested submenus that appear when hovering over or clicking parent items. This creates hierarchical navigation structures perfect for complex websites.

Example Multi-Level Custom Dropdown

<!DOCTYPE html>
<html>
<head>
   <title>Multi-Level Dropdown</title>
   <style>
      .navbar {
         background-color: #333;
         padding: 10px;
      }
      .dropdown {
         position: relative;
         display: inline-block;
      }
      .dropdown-btn {
         background-color: #333;
         color: white;
         padding: 10px 15px;
         border: none;
         cursor: pointer;
      }
      .dropdown-content {
         display: none;
         position: absolute;
         background-color: white;
         min-width: 160px;
         box-shadow: 0px 8px 16px rgba(0,0,0,0.2);
         z-index: 1;
      }
      .dropdown-item {
         color: black;
         padding: 12px 16px;
         display: block;
         cursor: pointer;
      }
      .dropdown-item:hover {
         background-color: #f1f1f1;
      }
      .submenu {
         position: relative;
      }
      .submenu-content {
         display: none;
         position: absolute;
         left: 100%;
         top: 0;
         background-color: white;
         min-width: 160px;
         box-shadow: 0px 8px 16px rgba(0,0,0,0.2);
      }
      .dropdown:hover .dropdown-content {
         display: block;
      }
      .submenu:hover .submenu-content {
         display: block;
      }
   </style>
</head>
<body style="font-family: Arial, sans-serif;">
   <div class="navbar">
      <div class="dropdown">
         <button class="dropdown-btn">Tutorials ?</button>
         <div class="dropdown-content">
            <div class="dropdown-item submenu">
               Web Development ?
               <div class="submenu-content">
                  <div class="dropdown-item">HTML</div>
                  <div class="dropdown-item">CSS</div>
                  <div class="dropdown-item">JavaScript</div>
               </div>
            </div>
            <div class="dropdown-item submenu">
               Programming ?
               <div class="submenu-content">
                  <div class="dropdown-item">Python</div>
                  <div class="dropdown-item">Java</div>
                  <div class="dropdown-item">C++</div>
               </div>
            </div>
            <div class="dropdown-item">Database</div>
         </div>
      </div>
   </div>
</body>
</html&
Updated on: 2026-03-16T21:38:54+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements