Bootstrap 5 Tutorial

v5.3.0

Bootstrap 5 Tutorial

Button Groups in Bootstrap 5

Button Groups: Group a series of buttons together on a single line or stack them vertically.

Basic Button Groups

Wrap a series of buttons with .btn in .btn-group.

Horizontal Button Groups
<!-- Basic Horizontal Button Group -->
            <div class="btn-group" role="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>

            <!-- Outline Button Group -->
            <div class="btn-group" role="group">
            <button type="button" class="btn btn-outline-primary">First</button>
            <button type="button" class="btn btn-outline-primary">Second</button>
            <button type="button" class="btn btn-outline-primary">Third</button>
            </div>

Vertical Button Groups

Vertical Layout
<!-- Vertical Button Group -->
            <div class="btn-group-vertical" role="group">
            <button type="button" class="btn btn-secondary">Top</button>
            <button type="button" class="btn btn-secondary">Middle</button>
            <button type="button" class="btn btn-secondary">Bottom</button>
            </div>

            <!-- Vertical Outline Group -->
            <div class="btn-group-vertical" role="group">
            <button type="button" class="btn btn-outline-success">Option 1</button>
            <button type="button" class="btn btn-outline-success">Option 2</button>
            <button type="button" class="btn btn-outline-success">Option 3</button>
            </div>

Button Toolbar

Combine button groups into a toolbar for more complex components.

Button Toolbar Examples
<!-- Button Toolbar -->
            <div class="btn-toolbar" role="toolbar">
            <!-- First group -->
            <div class="btn-group me-2" role="group">
                <button type="button" class="btn btn-outline-secondary">1</button>
                <button type="button" class="btn btn-outline-secondary">2</button>
                <button type="button" class="btn btn-outline-secondary">3</button>
            </div>
            
            <!-- Second group -->
            <div class="btn-group me-2" role="group">
                <button type="button" class="btn btn-outline-secondary">4</button>
                <button type="button" class="btn btn-outline-secondary">5</button>
            </div>
            </div>

            <!-- Toolbar with Icons -->
            <div class="btn-toolbar" role="toolbar">
            <div class="btn-group me-2" role="group">
                <button type="button" class="btn btn-primary">
                <i class="bi bi-bold"></i>
                </button>
                <button type="button" class="btn btn-primary">
                <i class="bi bi-italic"></i>
                </button>
            </div>
            </div>

Button Group Sizes

Size Variations
<!-- Large Button Group -->
            <div class="btn-group btn-group-lg" role="group">
            <button type="button" class="btn btn-primary">Large</button>
            <button type="button" class="btn btn-primary">Buttons</button>
            </div>

            <!-- Default Size Group -->
            <div class="btn-group" role="group">
            <button type="button" class="btn btn-secondary">Default</button>
            <button type="button" class="btn btn-secondary">Size</button>
            </div>

            <!-- Small Button Group -->
            <div class="btn-group btn-group-sm" role="group">
            <button type="button" class="btn btn-success">Small</button>
            <button type="button" class="btn btn-success">Buttons</button>
            </div>

Mixed Style Groups

Mixed Button Styles
<!-- Mixed Solid and Outline -->
            <div class="btn-group" role="group">
            <button type="button" class="btn btn-danger">Delete</button>
            <button type="button" class="btn btn-outline-danger">Cancel</button>
            </div>

            <!-- Different Colors in Group -->
            <div class="btn-group" role="group">
            <button type="button" class="btn btn-primary">Primary</button>
            <button type="button" class="btn btn-secondary">Secondary</button>
            <button type="button" class="btn btn-success">Success</button>
            </div>

            <!-- Icons and Text Mix -->
            <div class="btn-group" role="group">
            <button type="button" class="btn btn-outline-warning">
                <i class="bi bi-star"></i>
            </button>
            <button type="button" class="btn btn-warning">
                <i class="bi bi-star-fill"></i> 4.5
            </button>
            </div>

Nested Button Groups

Nested Groups with Dropdowns
<!-- Nested Button Group with Dropdown -->
            <div class="btn-group" role="group">
            <button type="button" class="btn btn-primary">Action</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>

Accessibility Considerations

Button Group Accessibility
  • ✅ Use role="group" for button groups
  • ✅ Use role="toolbar" for button toolbars
  • ✅ Provide aria-label for screen readers when needed
  • ✅ Ensure proper tab order through grouped buttons
  • ✅ Maintain visual focus indicators
  • ✅ Test with keyboard navigation only
  • ✅ Consider using aria-pressed for toggle buttons