Input groups let you enhance form controls by adding text, icons, buttons, or button groups to either side of an input, select, or file input.
Class Name | Type | Description |
---|---|---|
input-group | Component | Container of inputs |
input-group-text | Component | Addon text or something as an addon |
input-group-sm | Size | Small size |
default | Size | Medium size (default) |
input-group-lg | Size | Large size |
Add text or buttons to the left, right, or both sides of an input using an input group. Labels should always be placed outside the group for accessibility.
HTML
<div class="input-group">
<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">
<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>
<div class="form-field">
<label for="basic-url" class="form-label">Your vanity URL</label>
<div class="input-group">
<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 basic-addon4"/>
</div>
<div class="form-text" id="basic-addon4">Example help text goes outside the input group.</div>
</div>
<div class="input-group">
<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">
<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>
Input groups use .flex-wrap
by default to support validation and flexible layouts. Use .flex-nowrap
to prevent wrapping.
HTML
<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>
Border-radius applies only to the first and last children in an .input-group
. Hidden elements in these positions may break styling.
HTML
<div class="input-group">
<span class="input-group-text" id="visible-addon">@</span>
<input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="visible-addon" />
<input type="text" class="form-control hidden" placeholder="Hidden input" aria-label="Hidden input" aria-describedby="visible-addon" />
</div>
Input groups can be sized using the .input-group-sm
, .input-group-lg
, default is medium. No need to add size classes to the individual elements, its not supported.
HTML
<div class="input-group input-group-sm">
<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">
<span class="input-group-text" id="inputGroup-sizing-default">Default</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>
You can add checkboxes and radios as addons to input groups.
HTML
<div class="input-group">
<div class="input-group-text">
<input class="form-check-input" type="checkbox" value="" aria-label="Checkbox for following text input"/>
</div>
<input type="text" class="form-control" aria-label="Text input with checkbox"/>
</div>
<div class="input-group">
<div class="input-group-text">
<input class="form-check-input" type="radio" value="" aria-label="Radio button for following text input"/>
</div>
<input type="text" class="form-control" aria-label="Text input with radio button"/>
</div>
HTML
<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>
Input groups support multiple addons.
HTML
<div class="input-group">
<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>
HTML
<div class="input-group">
<button class="btn btn-outline-neutral" 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">
<input type="text" class="form-control" placeholder="Recipient’s username" aria-label="Recipient’s username" aria-describedby="button-addon2"/>
<button class="btn btn-outline-neutral" type="button" id="button-addon2">Button</button>
</div>
<div class="input-group">
<button class="btn btn-outline-neutral" type="button">Button</button>
<button class="btn btn-outline-neutral" 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-outline-neutral" type="button">Button</button>
<button class="btn btn-outline-neutral" type="button">Button</button>
</div>
HTML
<div class="input-group">
<button class="btn btn-outline-neutral" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M7 9a1 1 0 0 0-.707 1.707l5 5a1 1 0 0 0 1.414 0l5-5A1 1 0 0 0 17 9z" clip-rule="evenodd"/></svg>
</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">
<input type="text" class="form-control" aria-label="Text input with dropdown button"/>
<button class="btn btn-outline-neutral" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M7 9a1 1 0 0 0-.707 1.707l5 5a1 1 0 0 0 1.414 0l5-5A1 1 0 0 0 17 9z" clip-rule="evenodd"/></svg>
</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>
</div>
<div class="input-group">
<button class="btn btn-outline-neutral" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M7 9a1 1 0 0 0-.707 1.707l5 5a1 1 0 0 0 1.414 0l5-5A1 1 0 0 0 17 9z" clip-rule="evenodd"/></svg>
</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-outline-neutral" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M7 9a1 1 0 0 0-.707 1.707l5 5a1 1 0 0 0 1.414 0l5-5A1 1 0 0 0 17 9z" clip-rule="evenodd"/></svg>
</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>
</div>
HTML
<div class="input-group">
<button type="button" class="btn btn-outline-neutral">Action</button>
<button type="button" class="btn btn-outline-neutral" data-bs-toggle="dropdown" aria-expanded="false">
<span class="icon-[iconamoon--arrow-down-2-fill] text-base"></span>
<span class="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-outline-neutral">Action</button>
<button type="button" class="btn btn-outline-neutral" data-bs-toggle="dropdown" aria-expanded="false">
<span class="icon-[iconamoon--arrow-down-2-fill] text-base"></span>
<span class="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>
</div>
Input groups support custom selects and file inputs.
HTML
<div class="input-group">
<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">
<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">
<button class="btn btn-outline-neutral" 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-outline-neutral" type="button">Button</button>
</div>
HTML
<div class="input-group">
<label class="input-group-text" for="inputGroupFile01">Upload</label>
<input type="file" class="form-control" id="inputGroupFile01"/>
</div>
<div class="input-group">
<input type="file" class="form-control" id="inputGroupFile02"/>
<label class="input-group-text" for="inputGroupFile02">Upload</label>
</div>
<div class="input-group">
<button class="btn btn-outline-neutral" 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-outline-neutral" type="button" id="inputGroupFileAddon04">Button</button>
</div>
Input group text styles can be customized using the following CSS variables.
.input-group-text {
--input-group-addon-padding-x: var(--input-btn-padding-x);
--input-group-addon-padding-y: var(--input-btn-padding-y);
--input-group-addon-font-weight: var(--input-font-weight, 400);
--input-group-addon-bg: var(--background-color-subtle);
--input-group-addon-color: var(--input-color);
--input-group-addon-border-color: var(--border-color-base);
--input-group-addon-radius: var(--input-btn-radius);
--input-group-addon-font-size: var(--input-btn-font-size);
--input-group-addon-line-height: var(--input-btn-line-height);
}