Input Group
Basic Example #
Place one add-on or button on either side of an input. You may also place one on both sides of an input. Remember to place
<label>
s outside the input group.
<div class="input-group mb-4">
<span class="input-group-text" id="basic-addon1">@</span
><input
type="text"
class="form-control"
placeholder="Username"
aria-label="Username"
aria-describedby="basic-addon1"
/>
</div>
<div class="input-group mb-4">
<input
type="text"
class="form-control"
placeholder="Recipient's username"
aria-label="Recipient's username"
aria-describedby="basic-addon2"
/><span class="input-group-text" id="basic-addon2">@example.com</span>
</div>
<label for="basic-url" class="form-label">Your vanity URL</label>
<div class="input-group mb-4">
<span class="input-group-text" id="basic-addon3">https://example.com/users/</span
><input
type="text"
class="form-control"
id="basic-url"
aria-describedby="basic-addon3"
/>
</div>
<div class="input-group mb-4">
<span class="input-group-text">$</span
><input
type="text"
class="form-control"
aria-label="Amount (to the nearest dollar)"
/><span class="input-group-text">.00</span>
</div>
<div class="input-group mb-4">
<input
type="text"
class="form-control"
placeholder="Username"
aria-label="Username"
/><span class="input-group-text">@</span
><input type="text" class="form-control" placeholder="Server" aria-label="Server" />
</div>
<div class="input-group">
<span class="input-group-text">With textarea</span
><textarea class="form-control" aria-label="With textarea"></textarea>
</div>
Wrapping #
Input groups wrap by default via
flex-wrap: wrap
in order to accommodate custom form field validation within an input group. You may disable this with
.flex-nowrap
.
<div class="input-group flex-nowrap">
<span class="input-group-text" id="addon-wrapping">@</span
><input
type="text"
class="form-control"
placeholder="Username"
aria-label="Username"
aria-describedby="addon-wrapping"
/>
</div>
Sizing #
Add the relative form sizing classes to the
.input-group
itself and contents within will automatically resize—no need for repeating the form control size classes on each element.
<div class="input-group input-group-sm mb-4">
<span class="input-group-text" id="inputGroup-sizing-sm">Small</span
><input
type="text"
class="form-control"
aria-label="Sizing example input"
aria-describedby="inputGroup-sizing-sm"
/>
</div>
<div class="input-group mb-4">
<span class="input-group-text" id="inputGroup-sizing-default">Normal</span
><input
type="text"
class="form-control"
aria-label="Sizing example input"
aria-describedby="inputGroup-sizing-default"
/>
</div>
<div class="input-group input-group-lg">
<span class="input-group-text" id="inputGroup-sizing-lg">Large</span
><input
type="text"
class="form-control"
aria-label="Sizing example input"
aria-describedby="inputGroup-sizing-lg"
/>
</div>
Checkboxes And Radios #
Place any checkbox or radio option within an input group’s addon instead of text. We recommend adding
.mt-0
to the
.form-check-input
when there’s no visible text next to the input.
<div class="input-group mb-4">
<div class="input-group-text">
<input
type="checkbox"
class="form-check-input mt-0"
aria-label="Checkbox for following text input"
value=""
/>
</div>
<input type="text" class="form-control" aria-label="Text input with checkbox" />
</div>
<div class="input-group">
<div class="input-group-text">
<input
type="radio"
class="form-check-input mt-0"
aria-label="Radio button for following text input"
value=""
/>
</div>
<input type="text" class="form-control" aria-label="Text input with radio button" />
</div>
Multiple Inputs #
While multiple
<input>
s are supported visually, validation styles are only available for input groups with a single
<input>
.
<div class="input-group">
<span class="input-group-text">First and last name</span
><input type="text" aria-label="First name" class="form-control" /><input
type="text"
aria-label="Last name"
class="form-control"
/>
</div>
Multiple Addons #
Multiple add-ons are supported and can be mixed with checkbox and radio input versions.
<div class="input-group mb-4">
<span class="input-group-text">$</span><span class="input-group-text">0.00</span
><input
type="text"
class="form-control"
aria-label="Dollar amount (with dot and two decimal places)"
/>
</div>
<div class="input-group">
<input
type="text"
class="form-control"
aria-label="Dollar amount (with dot and two decimal places)"
/><span class="input-group-text">$</span><span class="input-group-text">0.00</span>
</div>
Button Addons #
<div class="input-group mb-4">
<button class="btn btn-primary" type="button" id="button-addon1">Button</button
><input
type="text"
class="form-control"
placeholder=""
aria-label="Example text with button addon"
aria-describedby="button-addon1"
/>
</div>
<div class="input-group mb-4">
<input
type="text"
class="form-control"
placeholder="Recipient's username"
aria-label="Recipient's username"
aria-describedby="button-addon2"
/><button class="btn btn-primary" type="button" id="button-addon2">Button</button>
</div>
<div class="input-group mb-4">
<button class="btn btn-primary" type="button">Button</button
><button class="btn btn-primary" type="button">Button</button
><input
type="text"
class="form-control"
placeholder=""
aria-label="Example text with two button addons"
/>
</div>
<div class="input-group">
<input
type="text"
class="form-control"
placeholder="Recipient's username"
aria-label="Recipient's username with two button addons"
/><button class="btn btn-primary" type="button">Button</button
><button class="btn btn-primary" type="button">Button</button>
</div>
Buttons With Dropdowns #
<div class="input-group mb-4">
<button
class="btn btn-primary dropdown-toggle"
type="button"
data-bs-toggle="dropdown"
aria-expanded="false"
>
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 here</a></li>
<li><hr class="dropdown-divider" /></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
<input
type="text"
class="form-control"
aria-label="Text input with dropdown button"
/>
</div>
<div class="input-group mb-4">
<input
type="text"
class="form-control"
aria-label="Text input with dropdown button"
/><button
class="btn btn-primary dropdown-toggle"
type="button"
data-bs-toggle="dropdown"
aria-expanded="false"
>
Dropdown
</button>
<ul class="dropdown-menu dropdown-menu-end">
<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 here</a></li>
<li><hr class="dropdown-divider" /></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
</div>
<div class="input-group">
<button
class="btn btn-primary dropdown-toggle"
type="button"
data-bs-toggle="dropdown"
aria-expanded="false"
>
Dropdown
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action before</a></li>
<li><a class="dropdown-item" href="#">Another action before</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
<li><hr class="dropdown-divider" /></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
<input
type="text"
class="form-control"
aria-label="Text input with 2 dropdown buttons"
/><button
class="btn btn-primary dropdown-toggle"
type="button"
data-bs-toggle="dropdown"
aria-expanded="false"
>
Dropdown
</button>
<ul class="dropdown-menu dropdown-menu-end">
<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 here</a></li>
<li><hr class="dropdown-divider" /></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
</div>
Segmented Buttons #
<div class="input-group mb-4">
<button type="button" class="btn btn-primary">Action</button
><button
type="button"
class="btn btn-primary dropdown-toggle dropdown-toggle-split"
data-bs-toggle="dropdown"
aria-expanded="false"
>
<span class="visually-hidden">Toggle Dropdown</span>
</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 here</a></li>
<li><hr class="dropdown-divider" /></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
<input
type="text"
class="form-control"
aria-label="Text input with segmented dropdown button"
/>
</div>
<div class="input-group">
<input
type="text"
class="form-control"
aria-label="Text input with segmented dropdown button"
/><button type="button" class="btn btn-primary">Action</button
><button
type="button"
class="btn btn-primary dropdown-toggle dropdown-toggle-split"
data-bs-toggle="dropdown"
aria-expanded="false"
>
<span class="visually-hidden">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu dropdown-menu-end">
<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 here</a></li>
<li><hr class="dropdown-divider" /></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
</div>
Custom Forms #
Input groups include support for custom selects and custom file inputs. Browser default versions of these are not supported.
Custom Select #
<div class="input-group mb-4">
<label class="input-group-text" for="inputGroupSelect01">Options</label
><select class="form-select" id="inputGroupSelect01">
<option selected="">Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
<div class="input-group mb-4">
<select class="form-select" id="inputGroupSelect02">
<option selected="">Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option></select
><label class="input-group-text" for="inputGroupSelect02">Options</label>
</div>
<div class="input-group mb-4">
<button class="btn btn-primary" type="button">Button</button
><select
class="form-select"
id="inputGroupSelect03"
aria-label="Example select with button addon"
>
<option selected="">Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
<div class="input-group">
<select
class="form-select"
id="inputGroupSelect04"
aria-label="Example select with button addon"
>
<option selected="">Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option></select
><button class="btn btn-primary" type="button">Button</button>
</div>
Custom File Input #
<div class="input-group mb-4">
<label class="input-group-text" for="inputGroupFile01">Upload</label
><input type="file" class="form-control" id="inputGroupFile01" />
</div>
<div class="input-group mb-4">
<input type="file" class="form-control" id="inputGroupFile02" /><label
class="input-group-text"
for="inputGroupFile02"
>Upload</label
>
</div>
<div class="input-group mb-4">
<button class="btn btn-primary" type="button" id="inputGroupFileAddon03">
Button</button
><input
type="file"
class="form-control"
id="inputGroupFile03"
aria-describedby="inputGroupFileAddon03"
aria-label="Upload"
/>
</div>
<div class="input-group">
<input
type="file"
class="form-control"
id="inputGroupFile04"
aria-describedby="inputGroupFileAddon04"
aria-label="Upload"
/><button class="btn btn-primary" type="button" id="inputGroupFileAddon04">
Button
</button>
</div>