Ir para o conteúdo principal Pular para a navegação de documentos
in English

Esquema

Dê a seus formulários alguma estrutura - de inline a implementações de grades horizontais e personalizadas - com nossas opções de layout de formulário.

Formulários

Cada grupo de campos de formulário deve residir em um <form>elemento. O Bootstrap não fornece um estilo padrão para o <form>elemento, mas existem alguns recursos poderosos do navegador que são fornecidos por padrão.

  • Novo nos formulários do navegador? Considere revisar os documentos do formulário MDN para obter uma visão geral e uma lista completa de atributos disponíveis.
  • <button>s dentro de um <form>padrão para type="submit", portanto, esforce-se para ser específico e sempre inclua um type.
  • Você pode desabilitar todos os elementos de formulário em um formulário com o disabledatributo no <form>.

Como o Bootstrap se aplica display: blocka width: 100%quase todos os nossos controles de formulário, os formulários, por padrão, serão empilhados verticalmente. Classes adicionais podem ser usadas para variar esse layout em uma base por formulário.

Serviços de utilidade pública

Os utilitários de margem são a maneira mais fácil de adicionar alguma estrutura aos formulários. Eles fornecem agrupamento básico de rótulos, controles, texto de formulário opcional e mensagens de validação de formulário. Recomendamos manter margin-bottomos utilitários e usar uma única direção em todo o formulário para obter consistência.

Sinta-se à vontade para construir seus formulários como quiser, com <fieldset>s, <div>s ou quase qualquer outro elemento.

<div class="mb-3">
  <label for="formGroupExampleInput" class="form-label">Example label</label>
  <input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input placeholder">
</div>
<div class="mb-3">
  <label for="formGroupExampleInput2" class="form-label">Another label</label>
  <input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input placeholder">
</div>

Grade do formulário

Formulários mais complexos podem ser construídos usando nossas classes de grade. Use-os para layouts de formulário que exigem várias colunas, larguras variadas e opções de alinhamento adicionais. Requer que a $enable-grid-classesvariável Sass esteja habilitada (ativada por padrão).

<div class="row">
  <div class="col">
    <input type="text" class="form-control" placeholder="First name" aria-label="First name">
  </div>
  <div class="col">
    <input type="text" class="form-control" placeholder="Last name" aria-label="Last name">
  </div>
</div>

Calhas

Ao adicionar classes modificadoras de medianiz , você pode ter controle sobre a largura da medianiz tanto na direção em linha quanto na direção do bloco. Também requer que a $enable-grid-classesvariável Sass esteja habilitada (ativada por padrão).

<div class="row g-3">
  <div class="col">
    <input type="text" class="form-control" placeholder="First name" aria-label="First name">
  </div>
  <div class="col">
    <input type="text" class="form-control" placeholder="Last name" aria-label="Last name">
  </div>
</div>

Layouts mais complexos também podem ser criados com o sistema de grade.

<form class="row g-3">
  <div class="col-md-6">
    <label for="inputEmail4" class="form-label">Email</label>
    <input type="email" class="form-control" id="inputEmail4">
  </div>
  <div class="col-md-6">
    <label for="inputPassword4" class="form-label">Password</label>
    <input type="password" class="form-control" id="inputPassword4">
  </div>
  <div class="col-12">
    <label for="inputAddress" class="form-label">Address</label>
    <input type="text" class="form-control" id="inputAddress" placeholder="1234 Main St">
  </div>
  <div class="col-12">
    <label for="inputAddress2" class="form-label">Address 2</label>
    <input type="text" class="form-control" id="inputAddress2" placeholder="Apartment, studio, or floor">
  </div>
  <div class="col-md-6">
    <label for="inputCity" class="form-label">City</label>
    <input type="text" class="form-control" id="inputCity">
  </div>
  <div class="col-md-4">
    <label for="inputState" class="form-label">State</label>
    <select id="inputState" class="form-select">
      <option selected>Choose...</option>
      <option>...</option>
    </select>
  </div>
  <div class="col-md-2">
    <label for="inputZip" class="form-label">Zip</label>
    <input type="text" class="form-control" id="inputZip">
  </div>
  <div class="col-12">
    <div class="form-check">
      <input class="form-check-input" type="checkbox" id="gridCheck">
      <label class="form-check-label" for="gridCheck">
        Check me out
      </label>
    </div>
  </div>
  <div class="col-12">
    <button type="submit" class="btn btn-primary">Sign in</button>
  </div>
</form>

Forma horizontal

Crie formulários horizontais com a grade adicionando a .rowclasse aos grupos de formulários e usando as .col-*-*classes para especificar a largura de seus rótulos e controles. Certifique-se de adicionar .col-form-labelaos seus <label>s também para que eles fiquem centralizados verticalmente com seus controles de formulário associados.

Às vezes, talvez você precise usar utilitários de margem ou preenchimento para criar o alinhamento perfeito que você precisa. Por exemplo, removemos o padding-toprótulo de entradas de rádio empilhadas para alinhar melhor a linha de base do texto.

Rádios
<form>
  <div class="row mb-3">
    <label for="inputEmail3" class="col-sm-2 col-form-label">Email</label>
    <div class="col-sm-10">
      <input type="email" class="form-control" id="inputEmail3">
    </div>
  </div>
  <div class="row mb-3">
    <label for="inputPassword3" class="col-sm-2 col-form-label">Password</label>
    <div class="col-sm-10">
      <input type="password" class="form-control" id="inputPassword3">
    </div>
  </div>
  <fieldset class="row mb-3">
    <legend class="col-form-label col-sm-2 pt-0">Radios</legend>
    <div class="col-sm-10">
      <div class="form-check">
        <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios1" value="option1" checked>
        <label class="form-check-label" for="gridRadios1">
          First radio
        </label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios2" value="option2">
        <label class="form-check-label" for="gridRadios2">
          Second radio
        </label>
      </div>
      <div class="form-check disabled">
        <input class="form-check-input" type="radio" name="gridRadios" id="gridRadios3" value="option3" disabled>
        <label class="form-check-label" for="gridRadios3">
          Third disabled radio
        </label>
      </div>
    </div>
  </fieldset>
  <div class="row mb-3">
    <div class="col-sm-10 offset-sm-2">
      <div class="form-check">
        <input class="form-check-input" type="checkbox" id="gridCheck1">
        <label class="form-check-label" for="gridCheck1">
          Example checkbox
        </label>
      </div>
    </div>
  </div>
  <button type="submit" class="btn btn-primary">Sign in</button>
</form>

Dimensionamento de rótulo de formulário horizontal

Certifique-se de usar .col-form-label-smou .col-form-label-lgpara seus <label>s ou <legend>s para seguir corretamente o tamanho de .form-control-lge .form-control-sm.

<div class="row mb-3">
  <label for="colFormLabelSm" class="col-sm-2 col-form-label col-form-label-sm">Email</label>
  <div class="col-sm-10">
    <input type="email" class="form-control form-control-sm" id="colFormLabelSm" placeholder="col-form-label-sm">
  </div>
</div>
<div class="row mb-3">
  <label for="colFormLabel" class="col-sm-2 col-form-label">Email</label>
  <div class="col-sm-10">
    <input type="email" class="form-control" id="colFormLabel" placeholder="col-form-label">
  </div>
</div>
<div class="row">
  <label for="colFormLabelLg" class="col-sm-2 col-form-label col-form-label-lg">Email</label>
  <div class="col-sm-10">
    <input type="email" class="form-control form-control-lg" id="colFormLabelLg" placeholder="col-form-label-lg">
  </div>
</div>

Dimensionamento da coluna

Conforme mostrado nos exemplos anteriores, nosso sistema de grade permite que você coloque qualquer número de .cols dentro de um arquivo .row. Eles dividirão a largura disponível igualmente entre eles. Você também pode escolher um subconjunto de suas colunas para ocupar mais ou menos espaço, enquanto os .cols restantes dividem igualmente o resto, com classes de coluna específicas como .col-sm-7.

<div class="row g-3">
  <div class="col-sm-7">
    <input type="text" class="form-control" placeholder="City" aria-label="City">
  </div>
  <div class="col-sm">
    <input type="text" class="form-control" placeholder="State" aria-label="State">
  </div>
  <div class="col-sm">
    <input type="text" class="form-control" placeholder="Zip" aria-label="Zip">
  </div>
</div>

Dimensionamento automático

O exemplo abaixo usa um utilitário flexbox para centralizar verticalmente o conteúdo e altera .colpara .col-autoque suas colunas ocupem apenas o espaço necessário. Dito de outra forma, a coluna se dimensiona com base no conteúdo.

@
<form class="row gy-2 gx-3 align-items-center">
  <div class="col-auto">
    <label class="visually-hidden" for="autoSizingInput">Name</label>
    <input type="text" class="form-control" id="autoSizingInput" placeholder="Jane Doe">
  </div>
  <div class="col-auto">
    <label class="visually-hidden" for="autoSizingInputGroup">Username</label>
    <div class="input-group">
      <div class="input-group-text">@</div>
      <input type="text" class="form-control" id="autoSizingInputGroup" placeholder="Username">
    </div>
  </div>
  <div class="col-auto">
    <label class="visually-hidden" for="autoSizingSelect">Preference</label>
    <select class="form-select" id="autoSizingSelect">
      <option selected>Choose...</option>
      <option value="1">One</option>
      <option value="2">Two</option>
      <option value="3">Three</option>
    </select>
  </div>
  <div class="col-auto">
    <div class="form-check">
      <input class="form-check-input" type="checkbox" id="autoSizingCheck">
      <label class="form-check-label" for="autoSizingCheck">
        Remember me
      </label>
    </div>
  </div>
  <div class="col-auto">
    <button type="submit" class="btn btn-primary">Submit</button>
  </div>
</form>

Você pode então remixar isso mais uma vez com classes de coluna específicas de tamanho.

@
<form class="row gx-3 gy-2 align-items-center">
  <div class="col-sm-3">
    <label class="visually-hidden" for="specificSizeInputName">Name</label>
    <input type="text" class="form-control" id="specificSizeInputName" placeholder="Jane Doe">
  </div>
  <div class="col-sm-3">
    <label class="visually-hidden" for="specificSizeInputGroupUsername">Username</label>
    <div class="input-group">
      <div class="input-group-text">@</div>
      <input type="text" class="form-control" id="specificSizeInputGroupUsername" placeholder="Username">
    </div>
  </div>
  <div class="col-sm-3">
    <label class="visually-hidden" for="specificSizeSelect">Preference</label>
    <select class="form-select" id="specificSizeSelect">
      <option selected>Choose...</option>
      <option value="1">One</option>
      <option value="2">Two</option>
      <option value="3">Three</option>
    </select>
  </div>
  <div class="col-auto">
    <div class="form-check">
      <input class="form-check-input" type="checkbox" id="autoSizingCheck2">
      <label class="form-check-label" for="autoSizingCheck2">
        Remember me
      </label>
    </div>
  </div>
  <div class="col-auto">
    <button type="submit" class="btn btn-primary">Submit</button>
  </div>
</form>

Formulários embutidos

Use as .row-cols-*classes para criar layouts horizontais responsivos. Ao adicionar classes modificadoras de medianiz , teremos medianizes nas direções horizontal e vertical. Em viewports móveis estreitas, o .col-12ajuda a empilhar os controles de formulário e muito mais. O .align-items-centeralinha os elementos do formulário ao meio, fazendo o .form-checkboxalinhamento corretamente.

@
<form class="row row-cols-lg-auto g-3 align-items-center">
  <div class="col-12">
    <label class="visually-hidden" for="inlineFormInputGroupUsername">Username</label>
    <div class="input-group">
      <div class="input-group-text">@</div>
      <input type="text" class="form-control" id="inlineFormInputGroupUsername" placeholder="Username">
    </div>
  </div>

  <div class="col-12">
    <label class="visually-hidden" for="inlineFormSelectPref">Preference</label>
    <select class="form-select" id="inlineFormSelectPref">
      <option selected>Choose...</option>
      <option value="1">One</option>
      <option value="2">Two</option>
      <option value="3">Three</option>
    </select>
  </div>

  <div class="col-12">
    <div class="form-check">
      <input class="form-check-input" type="checkbox" id="inlineFormCheck">
      <label class="form-check-label" for="inlineFormCheck">
        Remember me
      </label>
    </div>
  </div>

  <div class="col-12">
    <button type="submit" class="btn btn-primary">Submit</button>
  </div>
</form>