Modal
How it works
Before getting started with Bootstrap’s modal component, be sure to read the following as our menu options have recently changed.
- Modals are built with HTML, CSS, and JavaScript. They’re positioned over everything else in the
document and remove scroll from the
<body>
so that modal content scrolls instead. - Clicking on the modal “backdrop” will automatically close the modal.
- Bootstrap only supports one modal window at a time. Nested modals aren’t supported as we believe them to be poor user experiences.
- Modals use
position: fixed
, which can sometimes be a bit particular about its rendering. Whenever possible, place your modal HTML in a top-level position to avoid potential interference from other elements. You’ll likely run into issues when nesting a.modal
within another fixed element. - Once again, due to
position: fixed
, there are some caveats with using modals on mobile devices.
Modal components
Below is a static modal example (meaning its position
and display
have been
overridden). Included are
the modal header, modal body (required for padding
), and modal footer (optional). We ask
that you
include modal headers with dismiss actions whenever possible, or provide another explicit dismiss
action.
Static backdrop
When backdrop is set to static, the modal will not close when clicking outside it. Click the button below to try it.
Scrolling long content
When modals become too long for the user’s viewport or device, they scroll independent of the page itself. Try the demo below to see what we mean.
You can also create a scrollable modal that allows scroll the modal body by adding
.modal-dialog-scrollabl
e to .modal-dialog
.
Vertically centered
Add .modal-dialog-centered
to .modal-dialog
to vertically center the modal.
Tooltips and popovers
Tooltips and popovers can be placed within modals as needed. When modals are closed, any tooltips and popovers within are also automatically dismissed.
Varying modal content
Have a bunch of buttons that all trigger the same modal with slightly different contents? Use
event.relatedTarget
and HTML data-bs-*
attributes to vary the contents of the
modal depending on which
button was clicked.
Below is a live demo followed by example HTML and JavaScript. For more information, read the modal
events docs for details on relatedTarget
.
Optional sizes
Modals have three optional sizes, available via modifier classes to be placed on a
.modal-dialog
. These
sizes kick in at certain breakpoints to avoid horizontal scrollbars on narrower viewports.
Size | Class | Modal max-width |
---|---|---|
Small | .modal-sm |
300px |
Default | None | 300px |
Large | .modal-lg |
800px |
Extra large | .modal-xl |
1140px |
Our default modal without modifier class constitutes the “medium” size modal.
Fullscreen Modal
Another override is the option to pop up a modal that covers the user viewport, available via modifier
classes that are placed on a .modal-dialog
.
Class | Availability |
---|---|
.modal-fullscreen |
Always |
.modal-fullscreen-sm-down |
Below 576px |
.modal-fullscreen-md-down |
Below768px |
.modal-fullscreen-lg-down |
Below992px |
.modal-fullscreen-xl-down |
Below1200px |
.modal-fullscreen-xxl-down |
Below1400px |