SourceGrupo de entrada
Estenda facilmente os controles de formulário adicionando texto, botões ou grupos de botões em ambos os lados das entradas de texto, seleções personalizadas e entradas de arquivo personalizadas.
Exemplo básico
Coloque um complemento ou botão em cada lado de uma entrada. Você também pode colocar um em ambos os lados de uma entrada. Lembre-se de colocar <label>
s fora do grupo de entrada.
cópia de
<div class= "input-group mb-3" >
<div class= "input-group-prepend" >
<span class= "input-group-text" id= "basic-addon1" > @</span>
</div>
<input type= "text" class= "form-control" placeholder= "Username" aria-label= "Username" aria-describedby= "basic-addon1" >
</div>
<div class= "input-group mb-3" >
<input type= "text" class= "form-control" placeholder= "Recipient's username" aria-label= "Recipient's username" aria-describedby= "basic-addon2" >
<div class= "input-group-append" >
<span class= "input-group-text" id= "basic-addon2" > @example.com</span>
</div>
</div>
<label for= "basic-url" > Your vanity URL</label>
<div class= "input-group mb-3" >
<div class= "input-group-prepend" >
<span class= "input-group-text" id= "basic-addon3" > https://example.com/users/</span>
</div>
<input type= "text" class= "form-control" id= "basic-url" aria-describedby= "basic-addon3" >
</div>
<div class= "input-group mb-3" >
<div class= "input-group-prepend" >
<span class= "input-group-text" > $</span>
</div>
<input type= "text" class= "form-control" aria-label= "Amount (to the nearest dollar)" >
<div class= "input-group-append" >
<span class= "input-group-text" > .00</span>
</div>
</div>
<div class= "input-group" >
<div class= "input-group-prepend" >
<span class= "input-group-text" > With textarea</span>
</div>
<textarea class= "form-control" aria-label= "With textarea" ></textarea>
</div>
Invólucro
Os grupos de entrada são agrupados por padrão flex-wrap: wrap
para acomodar a validação de campo de formulário personalizado em um grupo de entrada. Você pode desabilitar isso com .flex-nowrap
.
cópia de
<div class= "input-group flex-nowrap" >
<div class= "input-group-prepend" >
<span class= "input-group-text" id= "addon-wrapping" > @</span>
</div>
<input type= "text" class= "form-control" placeholder= "Username" aria-label= "Username" aria-describedby= "addon-wrapping" >
</div>
Dimensionamento
Adicione as classes de dimensionamento de formulário relativo ao .input-group
próprio e o conteúdo dentro será redimensionado automaticamente - não há necessidade de repetir as classes de tamanho de controle de formulário em cada elemento.
Não há suporte para dimensionamento nos elementos do grupo de entrada individual.
cópia de
<div class= "input-group input-group-sm mb-3" >
<div class= "input-group-prepend" >
<span class= "input-group-text" id= "inputGroup-sizing-sm" > Small</span>
</div>
<input type= "text" class= "form-control" aria-label= "Sizing example input" aria-describedby= "inputGroup-sizing-sm" >
</div>
<div class= "input-group mb-3" >
<div class= "input-group-prepend" >
<span class= "input-group-text" id= "inputGroup-sizing-default" > Default</span>
</div>
<input type= "text" class= "form-control" aria-label= "Sizing example input" aria-describedby= "inputGroup-sizing-default" >
</div>
<div class= "input-group input-group-lg" >
<div class= "input-group-prepend" >
<span class= "input-group-text" id= "inputGroup-sizing-lg" > Large</span>
</div>
<input type= "text" class= "form-control" aria-label= "Sizing example input" aria-describedby= "inputGroup-sizing-lg" >
</div>
Caixas de seleção e rádios
Coloque qualquer caixa de seleção ou opção de rádio no complemento de um grupo de entrada em vez de texto.
cópia de
<div class= "input-group mb-3" >
<div class= "input-group-prepend" >
<div class= "input-group-text" >
<input type= "checkbox" aria-label= "Checkbox for following text input" >
</div>
</div>
<input type= "text" class= "form-control" aria-label= "Text input with checkbox" >
</div>
<div class= "input-group" >
<div class= "input-group-prepend" >
<div class= "input-group-text" >
<input type= "radio" aria-label= "Radio button for following text input" >
</div>
</div>
<input type= "text" class= "form-control" aria-label= "Text input with radio button" >
</div>
Embora vários <input>
s sejam suportados visualmente, os estilos de validação estão disponíveis apenas para grupos de entrada com um único arquivo <input>
.
cópia de
<div class= "input-group" >
<div class= "input-group-prepend" >
<span class= "input-group-text" > First and last name</span>
</div>
<input type= "text" aria-label= "First name" class= "form-control" >
<input type= "text" aria-label= "Last name" class= "form-control" >
</div>
Vários complementos
Vários complementos são suportados e podem ser combinados com versões de caixa de seleção e entrada de rádio.
cópia de
<div class= "input-group mb-3" >
<div class= "input-group-prepend" >
<span class= "input-group-text" > $</span>
<span class= "input-group-text" > 0.00</span>
</div>
<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)" >
<div class= "input-group-append" >
<span class= "input-group-text" > $</span>
<span class= "input-group-text" > 0.00</span>
</div>
</div>
cópia de
<div class= "input-group mb-3" >
<div class= "input-group-prepend" >
<button class= "btn btn-outline-secondary" type= "button" id= "button-addon1" > Button</button>
</div>
<input type= "text" class= "form-control" placeholder= "" aria-label= "Example text with button addon" aria-describedby= "button-addon1" >
</div>
<div class= "input-group mb-3" >
<input type= "text" class= "form-control" placeholder= "Recipient's username" aria-label= "Recipient's username" aria-describedby= "button-addon2" >
<div class= "input-group-append" >
<button class= "btn btn-outline-secondary" type= "button" id= "button-addon2" > Button</button>
</div>
</div>
<div class= "input-group mb-3" >
<div class= "input-group-prepend" id= "button-addon3" >
<button class= "btn btn-outline-secondary" type= "button" > Button</button>
<button class= "btn btn-outline-secondary" type= "button" > Button</button>
</div>
<input type= "text" class= "form-control" placeholder= "" aria-label= "Example text with two button addons" aria-describedby= "button-addon3" >
</div>
<div class= "input-group" >
<input type= "text" class= "form-control" placeholder= "Recipient's username" aria-label= "Recipient's username with two button addons" aria-describedby= "button-addon4" >
<div class= "input-group-append" id= "button-addon4" >
<button class= "btn btn-outline-secondary" type= "button" > Button</button>
<button class= "btn btn-outline-secondary" type= "button" > Button</button>
</div>
</div>
cópia de
<div class= "input-group mb-3" >
<div class= "input-group-prepend" >
<button class= "btn btn-outline-secondary dropdown-toggle" type= "button" data-toggle= "dropdown" aria-haspopup= "true" aria-expanded= "false" > Dropdown</button>
<div class= "dropdown-menu" >
<a class= "dropdown-item" href= "#" > Action</a>
<a class= "dropdown-item" href= "#" > Another action</a>
<a class= "dropdown-item" href= "#" > Something else here</a>
<div role= "separator" class= "dropdown-divider" ></div>
<a class= "dropdown-item" href= "#" > Separated link</a>
</div>
</div>
<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" >
<div class= "input-group-append" >
<button class= "btn btn-outline-secondary dropdown-toggle" type= "button" data-toggle= "dropdown" aria-haspopup= "true" aria-expanded= "false" > Dropdown</button>
<div class= "dropdown-menu" >
<a class= "dropdown-item" href= "#" > Action</a>
<a class= "dropdown-item" href= "#" > Another action</a>
<a class= "dropdown-item" href= "#" > Something else here</a>
<div role= "separator" class= "dropdown-divider" ></div>
<a class= "dropdown-item" href= "#" > Separated link</a>
</div>
</div>
</div>
cópia de
<div class= "input-group mb-3" >
<div class= "input-group-prepend" >
<button type= "button" class= "btn btn-outline-secondary" > Action</button>
<button type= "button" class= "btn btn-outline-secondary dropdown-toggle dropdown-toggle-split" data-toggle= "dropdown" aria-haspopup= "true" aria-expanded= "false" >
<span class= "sr-only" > Toggle Dropdown</span>
</button>
<div class= "dropdown-menu" >
<a class= "dropdown-item" href= "#" > Action</a>
<a class= "dropdown-item" href= "#" > Another action</a>
<a class= "dropdown-item" href= "#" > Something else here</a>
<div role= "separator" class= "dropdown-divider" ></div>
<a class= "dropdown-item" href= "#" > Separated link</a>
</div>
</div>
<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" >
<div class= "input-group-append" >
<button type= "button" class= "btn btn-outline-secondary" > Action</button>
<button type= "button" class= "btn btn-outline-secondary dropdown-toggle dropdown-toggle-split" data-toggle= "dropdown" aria-haspopup= "true" aria-expanded= "false" >
<span class= "sr-only" > Toggle Dropdown</span>
</button>
<div class= "dropdown-menu" >
<a class= "dropdown-item" href= "#" > Action</a>
<a class= "dropdown-item" href= "#" > Another action</a>
<a class= "dropdown-item" href= "#" > Something else here</a>
<div role= "separator" class= "dropdown-divider" ></div>
<a class= "dropdown-item" href= "#" > Separated link</a>
</div>
</div>
</div>
Os grupos de entrada incluem suporte para seleções personalizadas e entradas de arquivo personalizadas. As versões padrão do navegador não são suportadas.
Seleção personalizada
cópia de
<div class= "input-group mb-3" >
<div class= "input-group-prepend" >
<label class= "input-group-text" for= "inputGroupSelect01" > Options</label>
</div>
<select class= "custom-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-3" >
<select class= "custom-select" id= "inputGroupSelect02" >
<option selected > Choose...</option>
<option value= "1" > One</option>
<option value= "2" > Two</option>
<option value= "3" > Three</option>
</select>
<div class= "input-group-append" >
<label class= "input-group-text" for= "inputGroupSelect02" > Options</label>
</div>
</div>
<div class= "input-group mb-3" >
<div class= "input-group-prepend" >
<button class= "btn btn-outline-secondary" type= "button" > Button</button>
</div>
<select class= "custom-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= "custom-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>
<div class= "input-group-append" >
<button class= "btn btn-outline-secondary" type= "button" > Button</button>
</div>
</div>
cópia de
<div class= "input-group mb-3" >
<div class= "input-group-prepend" >
<span class= "input-group-text" id= "inputGroupFileAddon01" > Upload</span>
</div>
<div class= "custom-file" >
<input type= "file" class= "custom-file-input" id= "inputGroupFile01" aria-describedby= "inputGroupFileAddon01" >
<label class= "custom-file-label" for= "inputGroupFile01" > Choose file</label>
</div>
</div>
<div class= "input-group mb-3" >
<div class= "custom-file" >
<input type= "file" class= "custom-file-input" id= "inputGroupFile02" >
<label class= "custom-file-label" for= "inputGroupFile02" aria-describedby= "inputGroupFileAddon02" > Choose file</label>
</div>
<div class= "input-group-append" >
<span class= "input-group-text" id= "inputGroupFileAddon02" > Upload</span>
</div>
</div>
<div class= "input-group mb-3" >
<div class= "input-group-prepend" >
<button class= "btn btn-outline-secondary" type= "button" id= "inputGroupFileAddon03" > Button</button>
</div>
<div class= "custom-file" >
<input type= "file" class= "custom-file-input" id= "inputGroupFile03" aria-describedby= "inputGroupFileAddon03" >
<label class= "custom-file-label" for= "inputGroupFile03" > Choose file</label>
</div>
</div>
<div class= "input-group" >
<div class= "custom-file" >
<input type= "file" class= "custom-file-input" id= "inputGroupFile04" aria-describedby= "inputGroupFileAddon04" >
<label class= "custom-file-label" for= "inputGroupFile04" > Choose file</label>
</div>
<div class= "input-group-append" >
<button class= "btn btn-outline-secondary" type= "button" id= "inputGroupFileAddon04" > Button</button>
</div>
</div>
Acessibilidade
Os leitores de tela terão problemas com seus formulários se você não incluir um rótulo para cada entrada. Para esses grupos de entrada, certifique-se de que qualquer rótulo ou funcionalidade adicional seja transmitido às tecnologias assistivas.
A técnica exata a ser usada ( <label>
elementos ocultos usando a .sr-only
classe, ou uso dos atributos aria-label
and aria-labelledby
, possivelmente em combinação com aria-describedby
) e quais informações adicionais precisarão ser transmitidas variam dependendo do tipo exato de widget de interface que você está implementando. Os exemplos nesta seção fornecem algumas abordagens sugeridas para casos específicos.