mirror of
https://github.com/twbs/bootstrap.git
synced 2024-12-04 16:24:22 +01:00
169 lines
6.7 KiB
Markdown
169 lines
6.7 KiB
Markdown
---
|
|
layout: docs
|
|
title: Buttons
|
|
description: Use Bootstrap's custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.
|
|
group: components
|
|
toc: true
|
|
---
|
|
|
|
## Examples
|
|
|
|
Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.
|
|
|
|
{{< example >}}
|
|
{{< buttons.inline >}}
|
|
{{- range (index $.Site.Data "theme-colors") }}
|
|
<button type="button" class="btn btn-{{ .name }}">{{ .name | title }}</button>
|
|
{{- end -}}
|
|
{{< /buttons.inline >}}
|
|
|
|
<button type="button" class="btn btn-link">Link</button>
|
|
{{< /example >}}
|
|
|
|
{{< callout info >}}
|
|
{{< partial "callout-warning-color-assistive-technologies.md" >}}
|
|
{{< /callout >}}
|
|
|
|
## Disable text wrapping
|
|
|
|
If you don't want the button text to wrap, you can add the `.text-nowrap` class to the button. In Sass, you can set `$btn-white-space: nowrap` to disable text wrapping for each button.
|
|
|
|
## Button tags
|
|
|
|
The `.btn` classes are designed to be used with the `<button>` element. However, you can also use these classes on `<a>` or `<input>` elements (though some browsers may apply a slightly different rendering).
|
|
|
|
When using button classes on `<a>` elements that are used to trigger in-page functionality (like collapsing content), rather than linking to new pages or sections within the current page, these links should be given a `role="button"` to appropriately convey their purpose to assistive technologies such as screen readers.
|
|
|
|
{{< example >}}
|
|
<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">
|
|
{{< /example >}}
|
|
|
|
## Outline buttons
|
|
|
|
In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the `.btn-outline-*` ones to remove all background images and colors on any button.
|
|
|
|
{{< example >}}
|
|
{{< buttons.inline >}}
|
|
{{- range (index $.Site.Data "theme-colors") }}
|
|
<button type="button" class="btn btn-outline-{{ .name }}">{{ .name | title }}</button>
|
|
{{- end -}}
|
|
{{< /buttons.inline >}}
|
|
{{< /example >}}
|
|
|
|
## Sizes
|
|
|
|
Fancy larger or smaller buttons? Add `.btn-lg` or `.btn-sm` for additional sizes.
|
|
|
|
{{< example >}}
|
|
<button type="button" class="btn btn-primary btn-lg">Large button</button>
|
|
<button type="button" class="btn btn-secondary btn-lg">Large button</button>
|
|
{{< /example >}}
|
|
|
|
{{< example >}}
|
|
<button type="button" class="btn btn-primary btn-sm">Small button</button>
|
|
<button type="button" class="btn btn-secondary btn-sm">Small button</button>
|
|
{{< /example >}}
|
|
|
|
Create block level buttons—those that span the full width of a parent—by adding `.btn-block`.
|
|
|
|
{{< example >}}
|
|
<button type="button" class="btn btn-primary btn-lg btn-block">Block level button</button>
|
|
<button type="button" class="btn btn-secondary btn-lg btn-block">Block level button</button>
|
|
{{< /example >}}
|
|
|
|
## Disabled state
|
|
|
|
Make buttons look inactive by adding the `disabled` boolean attribute to any `<button>` element. Disabled buttons have `pointer-events: none` applied to, preventing hover and active states from triggering.
|
|
|
|
{{< example >}}
|
|
<button type="button" class="btn btn-lg btn-primary" disabled>Primary button</button>
|
|
<button type="button" class="btn btn-secondary btn-lg" disabled>Button</button>
|
|
{{< /example >}}
|
|
|
|
Disabled buttons using the `<a>` element behave a bit different:
|
|
|
|
- `<a>`s don't support the `disabled` attribute, so you must add the `.disabled` class to make it visually appear disabled.
|
|
- Some future-friendly styles are included to disable all `pointer-events` on anchor buttons. In browsers which support that property, you won't see the disabled cursor at all.
|
|
- Disabled buttons should include the `aria-disabled="true"` attribute to indicate the state of the element to assistive technologies.
|
|
|
|
{{< example >}}
|
|
<a href="#" class="btn btn-primary btn-lg disabled" tabindex="-1" role="button" aria-disabled="true">Primary link</a>
|
|
<a href="#" class="btn btn-secondary btn-lg disabled" tabindex="-1" role="button" aria-disabled="true">Link</a>
|
|
{{< /example >}}
|
|
|
|
{{< callout warning >}}
|
|
##### Link functionality caveat
|
|
|
|
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. In addition, 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, add a `tabindex="-1"` attribute on these links (to prevent them from receiving keyboard focus) and use custom JavaScript to disable their functionality.
|
|
{{< /callout >}}
|
|
|
|
## Button plugin
|
|
|
|
The button plugin allows you to create simple on/off toggle buttons.
|
|
|
|
### Toggle states
|
|
|
|
Add `data-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>`.
|
|
|
|
{{< example >}}
|
|
<button type="button" class="btn btn-primary" data-toggle="button" autocomplete="off">Toggle button</button>
|
|
<button type="button" class="btn btn-primary active" data-toggle="button" autocomplete="off" aria-pressed="true">Active toggle button</button>
|
|
<button type="button" class="btn btn-primary" disabled data-toggle="button" autocomplete="off">Disabled toggle button</button>
|
|
{{< /example >}}
|
|
|
|
{{< example >}}
|
|
<a href="#" class="btn btn-primary" role="button" data-toggle="button">Toggle link</a>
|
|
<a href="#" class="btn btn-primary active" role="button" data-toggle="button" aria-pressed="true">Active toggle link</a>
|
|
<a href="#" class="btn btn-primary disabled" role="button" data-toggle="button">Disabled toggle link</a>
|
|
{{< /example >}}
|
|
|
|
### Methods
|
|
|
|
You can create a button instance with the button constructor, for example:
|
|
|
|
{{< highlight js >}}
|
|
var button = document.getElementById('myButton')
|
|
var bsButton = new bootstrap.Button(button)
|
|
{{< /highlight >}}
|
|
|
|
<table class="table">
|
|
<thead>
|
|
<tr>
|
|
<th>Method</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<code>toggle</code>
|
|
</td>
|
|
<td>
|
|
Toggles push state. Gives the button the appearance that it has been activated.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<code>dispose</code>
|
|
</td>
|
|
<td>
|
|
Destroys an element's button.
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
For example, to toggle all buttons
|
|
|
|
{{< highlight js >}}
|
|
var buttons = document.querySelectorAll('.btn')
|
|
buttons.forEach(function (button) {
|
|
var button = new bootstrap.Button(button)
|
|
button.toggle()
|
|
})
|
|
{{< /highlight >}}
|