Use Bootstrap’s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.
<!-- Primary Button -->
<button type="button" class="btn btn-primary mb-2">Primary</button>
<!-- Secondary Button -->
<button type="button" class="btn btn-secondary mb-2">Secondary</button>
<!-- Success Button -->
<button type="button" class="btn btn-success mb-2">Success</button>
<!-- Danger Button -->
<button type="button" class="btn btn-danger mb-2">Danger</button>
<!-- Warning Button -->
<button type="button" class="btn btn-warning mb-2">Warning</button>
<!-- Info Button -->
<button type="button" class="btn btn-info mb-2">Info</button>
<!-- Light Button -->
<button type="button" class="btn btn-light mb-2">Light</button>
<!-- Dark Button -->
<button type="button" class="btn btn-dark mb-2">Dark</button>
<!-- Link Button -->
<button type="button" class="btn btn-link mb-2">Link</button>
<!-- Primary Outline Button -->
<button type="button" class="btn btn-outline-primary mb-2">Primary</button>
<!-- Secondary Outline Button -->
<button type="button" class="btn btn-outline-secondary mb-2">Secondary</button>
<!-- Success Outline Button -->
<button type="button" class="btn btn-outline-success mb-2">Success</button>
<!-- Danger Outline Button -->
<button type="button" class="btn btn-outline-danger mb-2">Danger</button>
<!-- Warning Outline Button -->
<button type="button" class="btn btn-outline-warning mb-2">Warning</button>
<!-- Info Outline Button -->
<button type="button" class="btn btn-outline-info mb-2">Info</button>
<!-- Light Outline Button -->
<button type="button" class="btn btn-outline-light mb-2">Light</button>
<!-- Dark Outline Button -->
<button type="button" class="btn btn-outline-dark mb-2">Dark</button>
<!-- Button Tag -->
<a class="btn btn-primary" href="#" role="button">Link</a>
<button class="btn btn-primary" type="submit">Button</button>
<input class="btn btn-primary" type="button" value="Input">
<input class="btn btn-primary" type="submit" value="Submit">
<input class="btn btn-primary" type="reset" value="Reset">
Fancy larger or smaller buttons? Add .btn-lg
or .btn-sm
for additional sizes.
<!-- Sizing Button -->
<button type="button" class="btn btn-primary btn-lg">Large
button</button>
<button type="button" class="btn btn-primary">Default
button</button>
<button type="button" class="btn btn-primary btn-sm">Small
button</button>
<button type="button" class="btn btn-primary btn-xs">Xtra Small
button</button>
<!-- Button Block -->
<div class="d-grid gap-2">
<button class="btn btn-primary" type="button">Button</button>
<button class="btn btn-primary" type="button">Button</button>
</div>
Here we create a responsive variation, starting with vertically stacked buttons until the md
breakpoint, where .d-md-block
replaces the .d-grid
class, thus nullifying the gap-2
utility. Resize your browser to see them change.
<!-- Button Block --> <div class="d-grid gap-2 d-md-block">
<button class="btn btn-primary" type="button">Button</button>
<button class="btn btn-primary" type="button">Button</button>
</div>
You can adjust the width of your block buttons with grid column width classes. For example, for a half-width “block button”, use .col-6
. Center it horizontally with .mx-auto
, too.
<!-- Button Block -->
<div class="d-grid gap-2 col-6 mx-auto">
<button class="btn btn-primary" type="button">Button</button>
<button class="btn btn-primary" type="button">Button</button>
</div>
Additional utilities can be used to adjust the alignment of buttons when horizontal. Here we’ve taken our previous responsive example and added some flex utilities and a margin utility on the button to right align the buttons when they’re no longer stacked.
<!-- Button Block -->
<div class="d-grid gap-2 d-md-flex justify-content-md-end">
<button class="btn btn-primary" type="button">Button</button>
<button class="btn btn-primary" type="button">Button</button>
</div>
<!-- Button With Icon -->
<button type="button" class="btn btn-primary">
Your Text Goes Here <i class="fe fe-shopping-bag ms-1"></i>
</button>
<!-- Button with Icon-->
<!-- Button with Icon-->
<button type="button" class="btn btn-primary btn-icon">
+
</button>
<button type="button" class="btn btn-primary btn-icon">
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>
</button>
<button type="button" class="btn btn-icon btn-white border border-2 rounded-circle btn-dashed ms-2">
+
</button>
<!-- Button with icon Size -->
<button type="button" class="btn btn-primary btn-lg">
+
</button>
<button type="button" class="btn btn-primary">
+
</button>
<button type="button" class="btn btn-primary btn-sm">
+
</button>
Buttons will appear pressed (with a darker background, darker border, and
inset shadow) when active. There’s no need to add a class to <button>
s as they use a
pseudo-class. However, you can still force the same active
appearance with .active
(and include
the
aria-pressed="true"
attribute) should you need to replicate the
state programmatically.
<!-- Button Active State -->
<a href="#" class="btn btn-primary btn-lg active" role="button" aria-pressed="true">Primary link</a>
<a href="#" class="btn btn-secondary btn-lg active" role="button" aria-pressed="true">Link</a>
Make buttons look inactive by adding the disabled
boolean
attribute to any <button>
element.
<!-- Button Disabled -->
<button type="button" class="btn btn-primary" disabled>Primary button</button>
<button type="button" class="btn btn-secondary" disabled>Button</button>
Add data-bs-toggle="button"
to toggle a
button’s active
state. If you’re
pre-toggling a button, you must manually add the .active
class and
aria-pressed="true"
to the <button>
.
<!-- Toggle State -->
<button type="button" class="btn btn-primary" data-bs-toggle="button" autocomplete="off">Toggle button</button>
<button type="button" class="btn btn-primary active" data-bs-toggle="button" autocomplete="off" aria-pressed="true">Active toggle button</button>
<button type="button" class="btn btn-primary" disabled data-bs-toggle="button" autocomplete="off">Disabled toggle button</button>