Bootstrap React Buttons
Bootstrap React button component for actions in tables, forms, cards, and more. Bootstrap React provides various styles, states, and size. Ready to use and easy to customize.
Examples#
Bootstrap React includes a bunch of predefined buttons components, each serving its own semantic purpose. Buttons show what action will happen when the user clicks or touches it. Bootstrap React buttons are used to initialize operations, both in the background or foreground of an experience.
1<CButton color="primary">Primary</CButton>2<CButton color="secondary">Secondary</CButton>3<CButton color="success">Success</CButton>4<CButton color="danger">Danger</CButton>5<CButton color="warning">Warning</CButton>6<CButton color="info">Info</CButton>7<CButton color="light">Light</CButton>8<CButton color="dark">Dark</CButton>9<CButton color="link">Link</CButton>
Conveying meaning to assistive technologies
Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (e.g. the visible text), or is included through alternative means, such as additional text hidden with the `.visually-hidden` class.
Disable text wrapping#
If you don't want the button text to wrap, you can add the .text-nowrap
className to the <CButton>
. In Sass, you can set $btn-white-space: nowrap
to disable text wrapping for each button.
Button components#
The <CButton>
component are designed for <button>
, <a>
or <input>
elements (though some browsers may apply a slightly different rendering).
If you're using <CButton>
component as <a>
elements that are used to trigger functionality ex. collapsing content, these links should be given a role="button"
to adequately communicate their meaning to assistive technologies such as screen readers.
1<CButton component="a" color="primary" href="#" role="button">Link</CButton>2<CButton type="submit" color="primary">Button</CButton>3<CButton component="input" type="button" color="primary" value="Input"/>4<CButton component="input" type="submit" color="primary" value="Submit"/>5<CButton component="input" type="reset" color="primary" value="Reset"/>
Outline buttons#
If you need a button, but without the strong background colors. Set variant="outline"
prop to remove all background colors.
1<CButton color="primary" variant="outline">Primary</CButton>2<CButton color="secondary" variant="outline">Secondary</CButton>3<CButton color="success" variant="outline">Success</CButton>4<CButton color="danger" variant="outline">Danger</CButton>5<CButton color="warning" variant="outline">Warning</CButton>6<CButton color="info" variant="outline">Info</CButton>7<CButton color="light" variant="outline">Light</CButton>8<CButton color="dark" variant="outline">Dark</CButton>
Sizes#
Larger or smaller buttons? Add size="lg"
or size="sm"
for additional sizes.
1<CButton color="primary" size="lg">Large button</CButton>2<CButton color="secondary" size="lg">Large button</CButton>
1<CButton color="primary" size="sm">Small button</CButton>2<CButton color="secondary" size="sm">Small button</CButton>
Disabled state#
Add the disabled
boolean prop to any <CButton>
component to make buttons look inactive. Disabled button has pointer-events: none
applied to, disabling hover and active states from triggering.
1<CButton color="primary" size="lg" disabled>Primary button</CButton>2<CButton color="secondary" size="lg" disabled>Button</CButton>
Disabled buttons using the <a>
component act a little different:
<a>
s don't support the disabled
attribute, so Bootstrap React has to add .disabled
className to make buttons look inactive. Bootstrap React also has to add to the disabled button component aria-disabled="true"
attribute to show the state of the component to assistive technologies.
1<CButton component="a" href="#" color="primary" size="lg" disabled>Primary link</CButton>2<CButton component="a" href="#" color="secondary" size="lg" disabled>Link</CButton>
The .disabled
class uses pointer-events: none
to try to disable the link functionality of <a>
s, but that CSS property is not yet standardized. Besides, even in browsers that do support pointer-events: none
, keyboard navigation remains unaffected, meaning that sighted keyboard users and users of assistive technologies will still be able to activate these links. So to be safe, we automatically add a tabindex="-1"
attribute on disabled links (to prevent them from receiving keyboard focus) and use custom JavaScript to disable their functionality.
Block buttons#
Create buttons that span the full width of a parent—by using utilities.
1<div className="d-grid gap-2">2 <CButton color="primary">Button</CButton>3 <CButton color="primary">Button</CButton>4</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.
1<div className="d-grid gap-2 d-md-block">2 <CButton color="primary">Button</CButton>3 <CButton color="primary">Button</CButton>4</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.
1<div className="d-grid gap-2 col-6 mx-auto">2 <CButton color="primary">Button</CButton>3 <CButton color="primary">Button</CButton>4</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.
1<div className="d-grid gap-2 d-md-flex justify-content-md-end">2 <CButton color="primary" className="me-md-2">3 Button4 </CButton>5 <CButton color="primary">Button</CButton>6</div>
API#
CButton#
1import { CButton } from '@coreui/bootstrap-react'2// or3import CButton from '@coreui/bootstrap-react/src/components/button/CButton'
Property | Description | Type | Default |
---|---|---|---|
active | Toggle the active state for the component. | boolean | - |
className | A string of all className you want applied to the base component. | string | - |
color | Sets the color context of the component to one of Bootstrap React’s themed colors. | 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light' | string | primary |
component | Component used for the root node. Either a string to use a HTML element or a component. | string | ComponentClass<any, any> | FunctionComponent<any> | button |
disabled | Toggle the disabled state for the component. | boolean | - |
href | The href attribute specifies the URL of the page the link goes to. | string | - |
role | The role attribute describes the role of an element in programs that can make use of it, such as screen readers or magnifiers. | string | - |
shape | Select the shape of the component. | 'rounded' | 'rounded-top' | 'rounded-end' | 'rounded-bottom' | 'rounded-start' | 'rounded-circle' | 'rounded-pill' | 'rounded-0' | 'rounded-1' | 'rounded-2' | 'rounded-3' | string | - |
size | Size the component small or large. | 'sm' | 'lg' | - |
type | Specifies the type of button. Always specify the type attribute for the <button> element.Different browsers may use different default types for the <button> element. | 'button' | 'submit' | 'reset' | button |
variant | Set the button variant to an outlined button or a ghost button. | 'outline' | - |