Bootstrap - Bootstrap button groups

Bootstrap button groups allow you to group multiple buttons together on a single line or stacked vertically, making them look like a single, connected control. They are very useful for toolbars, segmented controls, and action groups.


1. Basic Syntax

To create a button group, wrap multiple buttons inside a container with the .btn-group class.

Example:

<div class="btn-group" role="group" aria-label="Basic Button Group">
  <button type="button" class="btn btn-primary">Left</button>
  <button type="button" class="btn btn-primary">Middle</button>
  <button type="button" class="btn btn-primary">Right</button>
</div>

Explanation:

  • .btn-group → Groups buttons together.

  • role="group" → Accessibility role.

  • aria-label → Provides a label for screen readers.


2. Types of Button Groups

(a) Horizontal Button Group (Default)

This is the standard layout.

<div class="btn-group" role="group">
  <button class="btn btn-secondary">Left</button>
  <button class="btn btn-secondary">Middle</button>
  <button class="btn btn-secondary">Right</button>
</div>

(b) Vertical Button Group

Use .btn-group-vertical to stack buttons vertically.

<div class="btn-group-vertical" role="group">
  <button class="btn btn-success">Top</button>
  <button class="btn btn-success">Middle</button>
  <button class="btn btn-success">Bottom</button>
</div>

(c) Mixed Styles in One Group

You can combine different button colors within the same group:

<div class="btn-group" role="group">
  <button class="btn btn-primary">Home</button>
  <button class="btn btn-warning">Profile</button>
  <button class="btn btn-danger">Logout</button>
</div>

3. Button Group Sizes

Bootstrap allows large, default, and small button groups:

<div class="btn-group btn-group-lg" role="group">
  <button class="btn btn-primary">Large 1</button>
  <button class="btn btn-primary">Large 2</button>
</div>

<div class="btn-group mt-2" role="group">
  <button class="btn btn-success">Default 1</button>
  <button class="btn btn-success">Default 2</button>
</div>

<div class="btn-group btn-group-sm mt-2" role="group">
  <button class="btn btn-danger">Small 1</button>
  <button class="btn btn-danger">Small 2</button>
</div>

4. Button Groups with Dropdowns

Button groups can include dropdown buttons by using .dropdown-toggle and .dropdown-menu.

<div class="btn-group" role="group">
  <button class="btn btn-primary">Left</button>
  <button class="btn btn-primary">Middle</button>
  
  <div class="btn-group" role="group">
    <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown">
      Dropdown
    </button>
    <ul class="dropdown-menu">
      <li><a class="dropdown-item" href="#">Action</a></li>
      <li><a class="dropdown-item" href="#">Another Action</a></li>
      <li><a class="dropdown-item" href="#">Something Else</a></li>
    </ul>
  </div>
</div>

5. Button Toolbars

You can combine multiple button groups into a toolbar using .btn-toolbar.

<div class="btn-toolbar" role="toolbar">
  <div class="btn-group me-2" role="group">
    <button class="btn btn-secondary">1</button>
    <button class="btn btn-secondary">2</button>
    <button class="btn btn-secondary">3</button>
  </div>
  
  <div class="btn-group me-2" role="group">
    <button class="btn btn-success">A</button>
    <button class="btn btn-success">B</button>
  </div>
</div>

Explanation:

  • .btn-toolbar → Groups multiple .btn-group elements in one row.

  • .me-2 → Adds spacing between button groups.


6. Toggle Button Groups

Bootstrap 5 allows toggleable button groups using data-bs-toggle="buttons".

<div class="btn-group" role="group" data-bs-toggle="buttons">
  <input type="checkbox" class="btn-check" id="btn1" autocomplete="off">
  <label class="btn btn-outline-primary" for="btn1">Option 1</label>

  <input type="checkbox" class="btn-check" id="btn2" autocomplete="off">
  <label class="btn btn-outline-primary" for="btn2">Option 2</label>

  <input type="checkbox" class="btn-check" id="btn3" autocomplete="off">
  <label class="btn btn-outline-primary" for="btn3">Option 3</label>
</div>

How it works:

  • .btn-check → Hides the checkbox but keeps its functionality.

  • .btn + for="id" → Labels act as toggle buttons.


7. Justified Button Groups

Bootstrap 5 removed .btn-group-justified, but you can achieve the same using flex utilities:

<div class="btn-group w-100" role="group">
  <button class="btn btn-outline-secondary flex-fill">Left</button>
  <button class="btn btn-outline-secondary flex-fill">Middle</button>
  <button class="btn btn-outline-secondary flex-fill">Right</button>
</div>

8. Bootstrap 3 vs Bootstrap 4 & 5 Differences

Feature Bootstrap 3 Bootstrap 4 & 5
Base class .btn-group Same
Vertical groups .btn-group-vertical Same
Dropdown support Yes Same
Toggle buttons jQuery-based Vanilla JS
Justified groups .btn-group-justified Use .flex-fill instead
Button toolbar Yes Same, but improved

9. Complete Example (Bootstrap 5)

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

  <h2>Bootstrap Button Groups Example</h2>

  <!-- Basic Button Group -->
  <div class="btn-group mb-3" role="group">
    <button class="btn btn-primary">Left</button>
    <button class="btn btn-primary">Middle</button>
    <button class="btn btn-primary">Right</button>
  </div>

  <!-- Vertical Button Group -->
  <div class="btn-group-vertical mb-3" role="group">
    <button class="btn btn-success">Top</button>
    <button class="btn btn-success">Middle</button>
    <button class="btn btn-success">Bottom</button>
  </div>

  <!-- Button Group with Dropdown -->
  <div class="btn-group mb-3" role="group">
    <button class="btn btn-warning">Option 1</button>
    <button class="btn btn-warning">Option 2</button>
    <button type="button" class="btn btn-warning dropdown-toggle" data-bs-toggle="dropdown">
      More
    </button>
    <ul class="dropdown-menu">
      <li><a class="dropdown-item" href="#">Action</a></li>
      <li><a class="dropdown-item" href="#">Something Else</a></li>
    </ul>
  </div>

  <!-- Toolbar Example -->
  <div class="btn-toolbar" role="toolbar">
    <div class="btn-group me-2" role="group">
      <button class="btn btn-secondary">1</button>
      <button class="btn btn-secondary">2</button>
      <button class="btn btn-secondary">3</button>
    </div>
    <div class="btn-group" role="group">
      <button class="btn btn-dark">A</button>
      <button class="btn btn-dark">B</button>
    </div>
  </div>

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