Bootstrap - Bootstrap 5 Select Menu

Bootstrap 5 provides a modern, responsive, and customizable way to create select menus (dropdowns) using the .form-select class. It replaces the old .custom-select class from Bootstrap 4 and comes with improved styling, sizing, and better accessibility


1. Basic Bootstrap 5 Select Menu

The default select menu uses the .form-select class.

<div class="mb-3">
  <label for="city" class="form-label">Select Your City</label>
  <select class="form-select" id="city">
    <option selected>Choose a city</option>
    <option value="1">New York</option>
    <option value="2">London</option>
    <option value="3">Tokyo</option>
  </select>
</div>

Key Points:

  • .form-select → Applies Bootstrap’s styles.

  • selected → Sets the default selected option.

  • id + for → Improves accessibility.


2. Select Menu Sizes

Bootstrap 5 provides three sizes for select menus:

a) Default Size

<select class="form-select">
  <option selected>Default size</option>
  <option>Option 1</option>
  <option>Option 2</option>
</select>

b) Large Select

<select class="form-select form-select-lg">
  <option selected>Large select menu</option>
  <option>Option 1</option>
  <option>Option 2</option>
</select>

c) Small Select

<select class="form-select form-select-sm">
  <option selected>Small select menu</option>
  <option>Option 1</option>
  <option>Option 2</option>
</select>

3. Multiple Select Menu

If you want users to select multiple options, add the multiple attribute.

<label for="skills" class="form-label">Select Your Skills</label>
<select class="form-select" id="skills" multiple>
  <option>HTML</option>
  <option>CSS</option>
  <option>JavaScript</option>
  <option>React</option>
  <option>Bootstrap</option>
</select>

Tip: Hold Ctrl (Windows) or Cmd (Mac) to select multiple options.


4. Disabled Select Menus

a) Disabled Entire Select

<select class="form-select" disabled>
  <option>Disabled select menu</option>
</select>

b) Disable Specific Options

<select class="form-select">
  <option selected>Choose an option</option>
  <option value="1">Active Option</option>
  <option value="2" disabled>Disabled Option</option>
  <option value="3">Another Option</option>
</select>

5. Select Menus with Groups

Bootstrap supports grouping related options using <optgroup>.

<label for="car" class="form-label">Choose a Car Brand</label>
<select class="form-select" id="car">
  <optgroup label="German Cars">
    <option>BMW</option>
    <option>Audi</option>
    <option>Mercedes</option>
  </optgroup>
  <optgroup label="Japanese Cars">
    <option>Toyota</option>
    <option>Honda</option>
    <option>Nissan</option>
  </optgroup>
</select>

6. Floating Label Select Menus

Bootstrap 5’s floating labels also work with .form-select.

<div class="form-floating">
  <select class="form-select" id="floatingSelect">
    <option selected>Open this select menu</option>
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
  </select>
  <label for="floatingSelect">Select an option</label>
</div>

7. Inline Select Menus

You can use select menus inside inline forms using .row or .d-flex.

<form class="row g-3 align-items-center">
  <div class="col-auto">
    <label for="gender" class="col-form-label">Gender</label>
  </div>
  <div class="col-auto">
    <select class="form-select" id="gender">
      <option selected>Choose...</option>
      <option>Male</option>
      <option>Female</option>
    </select>
  </div>
  <div class="col-auto">
    <button type="submit" class="btn btn-primary">Submit</button>
  </div>
</form>

8. Validation with Select Menus

Bootstrap 5 supports form validation with select menus.

<form class="needs-validation" novalidate>
  <div class="mb-3">
    <label for="country" class="form-label">Country</label>
    <select class="form-select" id="country" required>
      <option selected disabled value="">Choose...</option>
      <option>USA</option>
      <option>UK</option>
      <option>India</option>
    </select>
    <div class="invalid-feedback">
      Please select a valid country.
    </div>
  </div>
  <button class="btn btn-primary" type="submit">Submit</button>
</form>

9. Full Example: All Select Menu Features

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Bootstrap 5 Select Menus</title>
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="p-4">

  <h3>Bootstrap 5 Select Menu Examples</h3>

  <!-- Basic Select -->
  <div class="mb-3">
    <label for="basicSelect" class="form-label">Basic Select</label>
    <select class="form-select" id="basicSelect">
      <option selected>Choose...</option>
      <option>Option 1</option>
      <option>Option 2</option>
    </select>
  </div>

  <!-- Sizes -->
  <div class="mb-3">
    <label class="form-label">Select Sizes</label>
    <select class="form-select form-select-lg mb-2">
      <option selected>Large Select</option>
      <option>Option 1</option>
    </select>
    <select class="form-select mb-2">
      <option selected>Default Select</option>
      <option>Option 1</option>
    </select>
    <select class="form-select form-select-sm">
      <option selected>Small Select</option>
      <option>Option 1</option>
    </select>
  </div>

  <!-- Multiple Select -->
  <div class="mb-3">
    <label for="multiSelect" class="form-label">Multiple Select</label>
    <select class="form-select" id="multiSelect" multiple>
      <option>HTML</option>
      <option>CSS</option>
      <option>JavaScript</option>
      <option>React</option>
    </select>
  </div>

  <!-- Floating Label Select -->
  <div class="form-floating mb-3">
    <select class="form-select" id="floatingSelect">
      <option selected>Open this select menu</option>
      <option value="1">One</option>
      <option value="2">Two</option>
      <option value="3">Three</option>
    </select>
    <label for="floatingSelect">Floating Label Select</label>
  </div>

  <!-- Validation -->
  <form class="needs-validation" novalidate>
    <div class="mb-3">
      <label for="validatedSelect" class="form-label">Validated Select</label>
      <select class="form-select" id="validatedSelect" required>
        <option selected disabled value="">Choose...</option>
        <option>USA</option>
        <option>India</option>
        <option>UK</option>
      </select>
      <div class="invalid-feedback">
        Please choose a valid option.
      </div>
    </div>
    <button class="btn btn-primary" type="submit">Submit</button>
  </form>

  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>