Input group

Easily extend form controls by adding text, buttons, or button groups on either side of textual inputs.

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. We do not support multiple form-controls in a single input group and <label>s must come outside the input group.

@

@example.com

https://example.com/users/

$ .00

$ 0.00
<div class="input-group_sth">
  <span class="input-group-addon_sth" id="basic-addon1">@</span>
  <input type="text" class="form-control_sth" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1">
</div>
<br>
<div class="input-group_sth">
  <input type="text" class="form-control_sth" placeholder="Recipient's username" aria-label="Recipient's username" aria-describedby="basic-addon2">
  <span class="input-group-addon_sth" id="basic-addon2">@example.com</span>
</div>
<br>
<label for="basic-url">Your vanity URL</label>
<div class="input-group_sth">
  <span class="input-group-addon_sth" id="basic-addon3">https://example.com/users/</span>
  <input type="text" class="form-control_sth" id="basic-url" aria-describedby="basic-addon3">
</div>
<br>
<div class="input-group_sth">
  <span class="input-group-addon_sth">$</span>
  <input type="text" class="form-control_sth" aria-label="Amount (to the nearest dollar)">
  <span class="input-group-addon_sth">.00</span>
</div>
<br>
<div class="input-group_sth">
  <span class="input-group-addon_sth">$</span>
  <span class="input-group-addon_sth">0.00</span>
  <input type="text" class="form-control_sth" aria-label="Amount (to the nearest dollar)">
</div>

Sizing

Add the relative form sizing classes to the .input-group_sth itself and contents within will automatically resize—no need for repeating the form control size classes on each element.

@

@
<div class="input-group_sth input-group-lg_sth">
  <span class="input-group-addon_sth" id="sizing-addon1">@</span>
  <input type="text" class="form-control_sth" placeholder="Username" aria-label="Username" aria-describedby="sizing-addon1">
</div>
<br>
<div class="input-group_sth input-group-sm_sth">
  <span class="input-group-addon_sth" id="sizing-addon2">@</span>
  <input type="text" class="form-control_sth" placeholder="Username" aria-label="Username" aria-describedby="sizing-addon2">
</div>

Checkboxes and radio addons

Place any checkbox or radio option within an input group’s addon instead of text.

<div class="row_sth">
  <div class="col-lg-6_sth">
    <div class="input-group_sth">
      <span class="input-group-addon_sth">
        <input type="checkbox" aria-label="Checkbox for following text input">
      </span>
      <input type="text" class="form-control_sth" aria-label="Text input with checkbox">
    </div>
  </div>
  <div class="col-lg-6_sth">
    <div class="input-group_sth">
      <span class="input-group-addon_sth">
        <input type="radio" aria-label="Radio button for following text input">
      </span>
      <input type="text" class="form-control_sth" aria-label="Text input with radio button">
    </div>
  </div>
</div>

Multiple addons

Multiple add-ons are supported and can be mixed with checkbox and radio input versions.

$
$ 0.00
<div class="row_sth">
  <div class="col-lg-6_sth">
    <div class="input-group_sth">
      <span class="input-group-addon_sth">
        <input type="checkbox" aria-label="Checkbox for following text input">
      </span>
      <span class="input-group-addon_sth">$</span>
      <input type="text" class="form-control_sth" aria-label="Text input with checkbox">
    </div>
  </div>
  <div class="col-lg-6_sth">
    <div class="input-group_sth">
      <span class="input-group-addon_sth">$</span>
      <span class="input-group-addon_sth">0.00</span>
      <input type="text" class="form-control_sth" aria-label="Text input with radio button">
    </div>
  </div>
</div>

Button addons

Buttons in input groups must wrapped in a .input-group-btn_sth for proper alignment and sizing. This is required due to default browser styles that cannot be overridden.


<div class="row_sth">
  <div class="col-lg-6_sth">
    <div class="input-group_sth">
      <span class="input-group-btn_sth">
        <button class="btn_sth btn-secondary_sth" type="button">Go!</button>
      </span>
      <input type="text" class="form-control_sth" placeholder="Search for..." aria-label="Search for...">
    </div>
  </div>
  <div class="col-lg-6_sth">
    <div class="input-group_sth">
      <input type="text" class="form-control_sth" placeholder="Search for..." aria-label="Search for...">
      <span class="input-group-btn_sth">
        <button class="btn_sth btn-secondary_sth" type="button">Go!</button>
      </span>
    </div>
  </div>
</div>
<br>
<div class="row_sth">
  <div class="col-lg-6_sth offset-lg-3_sth">
    <div class="input-group_sth">
      <span class="input-group-btn_sth">
        <button class="btn_sth btn-secondary_sth" type="button">Hate it</button>
      </span>
      <input type="text" class="form-control_sth" placeholder="Product name" aria-label="Product name">
      <span class="input-group-btn_sth">
        <button class="btn_sth btn-secondary_sth" type="button">Love it</button>
      </span>
    </div>
  </div>
</div>

Buttons with dropdowns

<div class="row_sth">
  <div class="col-lg-6_sth">
    <div class="input-group_sth">
      <div class="input-group-btn_sth">
        <button type="button" class="btn_sth btn-secondary_sth dropdown-toggle_sth" data-toggle_sth="dropdown" aria-haspopup="true" aria-expanded="false">
          Action
        </button>
        <div class="dropdown-menu_sth">
          <a class="dropdown-item_sth" href="#">Action</a>
          <a class="dropdown-item_sth" href="#">Another action</a>
          <a class="dropdown-item_sth" href="#">Something else here</a>
          <div role="separator" class="dropdown-divider_sth"></div>
          <a class="dropdown-item_sth" href="#">Separated link</a>
        </div>
      </div>
      <input type="text" class="form-control_sth" aria-label="Text input with dropdown button">
    </div>
  </div>
  <div class="col-lg-6_sth">
    <div class="input-group_sth">
      <input type="text" class="form-control_sth" aria-label="Text input with dropdown button">
      <div class="input-group-btn_sth">
        <button type="button" class="btn_sth btn-secondary_sth dropdown-toggle_sth" data-toggle_sth="dropdown" aria-haspopup="true" aria-expanded="false">
          Action
        </button>
        <div class="dropdown-menu_sth dropdown-menu-right_sth">
          <a class="dropdown-item_sth" href="#">Action</a>
          <a class="dropdown-item_sth" href="#">Another action</a>
          <a class="dropdown-item_sth" href="#">Something else here</a>
          <div role="separator" class="dropdown-divider_sth"></div>
          <a class="dropdown-item_sth" href="#">Separated link</a>
        </div>
      </div>
    </div>
  </div>
</div>

Segmented buttons

<div class="row_sth">
  <div class="col-lg-6_sth">
    <div class="input-group_sth">
      <div class="input-group-btn_sth">
        <button type="button" class="btn_sth btn-secondary_sth">Action</button>
        <button type="button" class="btn_sth btn-secondary_sth dropdown-toggle_sth dropdown-toggle-split_sth" data-toggle_sth="dropdown" aria-haspopup="true" aria-expanded="false">
          <span class="sr-only_sth">Toggle Dropdown</span>
        </button>
        <div class="dropdown-menu_sth">
          <a class="dropdown-item_sth" href="#">Action</a>
          <a class="dropdown-item_sth" href="#">Another action</a>
          <a class="dropdown-item_sth" href="#">Something else here</a>
          <div role="separator" class="dropdown-divider_sth"></div>
          <a class="dropdown-item_sth" href="#">Separated link</a>
        </div>
      </div>
      <input type="text" class="form-control_sth" aria-label="Text input with segmented button dropdown">
    </div>
  </div>
  <div class="col-lg-6_sth">
    <div class="input-group_sth">
      <input type="text" class="form-control_sth" aria-label="Text input with segmented button dropdown">
      <div class="input-group-btn_sth">
        <button type="button" class="btn_sth btn-secondary_sth">Action</button>
        <button type="button" class="btn_sth btn-secondary_sth dropdown-toggle_sth dropdown-toggle-split_sth" data-toggle_sth="dropdown" aria-haspopup="true" aria-expanded="false">
          <span class="sr-only_sth">Toggle Dropdown</span>
        </button>
        <div class="dropdown-menu_sth dropdown-menu-right_sth">
          <a class="dropdown-item_sth" href="#">Action</a>
          <a class="dropdown-item_sth" href="#">Another action</a>
          <a class="dropdown-item_sth" href="#">Something else here</a>
          <div role="separator" class="dropdown-divider_sth"></div>
          <a class="dropdown-item_sth" href="#">Separated link</a>
        </div>
      </div>
    </div>
  </div>
</div>

Accessibility

Screen readers will have trouble with your forms if you don’t include a label for every input. For these input groups, ensure that any additional label or functionality is conveyed to assistive technologies.

The exact technique to be used (<label> elements hidden using the .sr-only_sth class, or use of the aria-label and aria-labelledby attributes, possibly in combination with aria-describedby) and what additional information will need to be conveyed will vary depending on the exact type of interface widget you’re implementing. The examples in this section provide a few suggested, case-specific approaches.