Formulários (Português)

Exemplos e diretrizes de uso para estilos de controle de formulário, opções de layout e componentes personalizados para a criação de uma ampla variedade de formulários.

Visão geral

Os controles de formulário do Bootstrap se expandem em nossos estilos de formulário reinicializados com classes. Use essas classes para ativar suas exibições personalizadas para uma renderização mais consistente em navegadores e dispositivos.

Certifique-se de usar um atributo type apropriado em todas as entradas (por exemplo , email para endereço de e-mail ou number para informações numéricas) para aproveitar os controles de entrada mais recentes, como verificação de e-mail, seleção de número e muito mais.

Aqui está um exemplo rápido para demonstrar os estilos de formulário do Bootstrap. Continue lendo para obter a documentação sobre as classes necessárias, layout de formulário e muito mais.

Controles de formulário

Certifique-se de explorar nossos formulários personalizados para criar um estilo adicional <select> s.

Para entradas de arquivo, troque o .form-control por .form-control-file.

Dimensionamento

Defina as alturas usando classes como .form-control-lg e .form-control-sm.

Somente leitura

Adicione o readonly Atributo booleano em uma entrada para evitar a modificação do valor da entrada. As entradas somente leitura parecem mais claras (assim como as entradas desativadas), mas mantêm o cursor padrão.

Texto simples somente leitura

Se você deseja que <input readonly> elementos em seu formulário sejam estilizados como texto simples, use o .form-control-plaintext classe para remover o estilo de campo padrão do formulário e preservar a margem e preenchimento corretos.

Caixas de seleção e rádios

Padrão caixas de seleção e rádios são aprimorados com a ajuda de .form-check, uma classe única para ambos os tipos de entrada que melhora o layout e o comportamento de seus elementos HTML. As caixas de seleção são para selecionar uma ou várias opções em uma lista, enquanto os rádios são para selecionar uma opção entre muitas.

Caixas de seleção e rádios desativados são suportados, mas para fornecer um not-allowed cursor sobre o cursor do pai <label>, você precisará adicionar o atributo disabled ao .form-check-input. O atributo disabled aplicará uma cor mais clara para ajudar a indicar o estado da entrada.

O uso de caixas de seleção e rádios foi criado para oferecer suporte à validação de formulário baseado em HTML e fornecer rótulos concisos e acessíveis. Como tal, nossos <input> se <label> s são elementos irmãos em oposição a um <input> dentro de um <label>. Isso é um pouco mais detalhado, pois você deve especificar os atributos id e for para relacionar os <input> e <label>.

Padrão (empilhado)

Por padrão, qualquer número de caixas de seleção e rádios que são irmãos imediatos serão empilhados verticalmente e apropriadamente espaçado com .form-check.

Caixa de seleção padrão
Caixa de seleção desativada

Rádio padrão
Segundo rádio padrão
Rádio desabilitado

Inline

Agrupe caixas de seleção ou rádios na mesma linha horizontal adicionando .form-check-inline a qualquer .form-check.

1
2
3 (desativado)

1
2
3 (desativado)

Sem rótulos

Adicione .position-static às entradas em .form-check que não têm nenhum texto de rótulo. Lembre-se de ainda fornecer alguma forma de rótulo para tecnologias assistivas (por exemplo, usando aria-label).

Layout

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

Grupos de formulários

A classe .form-group é a maneira mais fácil para adicionar alguma estrutura aos formulários. Ele fornece uma classe flexível que incentiva o agrupamento adequado de rótulos, controles, texto de ajuda opcional e mensagens de validação de formulário. Por padrão, ele se aplica apenas margin-bottom, mas seleciona estilos adicionais em .form-inline conforme necessário. Use-o com <fieldset> s, <div> s ou quase qualquer outro elemento.

Grade de formulário

Formulários mais complexos podem ser construídos usando nossas classes de grade. Use-os para layouts de formulário que requerem várias colunas, larguras variadas e opções de alinhamento adicionais.

Linha do formulário

Você também pode trocar .row por .form-row, uma variação de nossa linha de grade padrão que substitui as calhas de coluna padrão para layouts mais estreitos e compactos.

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

Forma horizontal

Crie formas horizontais com a grade adicionando a classe .row para formar grupos e usando o .col-*-* classes para especificar a largura de seus rótulos e controles. Certifique-se de adicionar .col-form-label aos seus <label> s também para que eles sejam centralizados verticalmente com os controles de formulário associados.

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

Rótulo de forma horizontal sizing

Dimensionamento da coluna

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

Dimensionamento automático

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

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

E, claro, os controles de formulário personalizados são suportados.

Formulários embutidos

Use o .form-inline classe para exibir uma série de rótulos, controles de formulário e botões em uma única linha horizontal. Os controles de formulário em formulários embutidos variam um pouco de seus estados padrão.

  • Os controles são display: flex, reduzindo qualquer espaço em branco HTML e permitindo que você forneça controle de alinhamento com utilitários de espaçamento e flexbox.
  • Os controles e grupos de entrada recebem width: auto para substituir o padrão do Bootstrap width: 100%.
  • Os controles só aparecem embutidos em janelas de visualização com pelo menos 576 px de largura para compensar janelas de visualização estreitas em dispositivos móveis.

Você pode precisar lidar manualmente com a largura e o alinhamento de controles de formulário individuais com utilitários de espaçamento (conforme mostrado abaixo). Por último, certifique-se de sempre incluir um <label> com cada controle de formulário, mesmo se você precisar ocultá-lo de visitantes que não leem tela com .sr-only .

Controles e seleções de formulários personalizados também são suportados.

Alternativas para rótulos ocultos

Tecnologias assistivas, como leitores de tela, terão problemas com seus formulários se você não incluir um rótulo para cada entrada. Para esses formulários embutidos, você pode ocultar os rótulos usando a classe .sr-only. Existem outros métodos alternativos de fornecer um rótulo para tecnologias assistivas, como aria-label, aria-labelledby ou title. Se nenhum deles estiver presente, as tecnologias assistivas podem recorrer ao uso do atributo placeholder, se presente, mas observe que o uso de placeholder como um a substituição por outros métodos de rotulagem não é recomendada.

Texto de ajuda

O texto de ajuda em nível de bloco em formulários pode ser criado usando .form-text (anteriormente conhecido como .help-block na v3). O texto de ajuda embutido pode ser implementado de maneira flexível usando qualquer elemento HTML embutido e classes de utilitário como .text-muted.

Associando texto de ajuda a controles de formulário

O texto de ajuda deve ser explicitamente associado ao controle de formulário ao qual se relaciona usando o atributo aria-describedby. Isso garantirá que as tecnologias assistivas, como leitores de tela, anunciem este texto de ajuda quando o usuário focalizar ou acessar o controle.

O texto de ajuda abaixo das entradas pode ser estilizado com .form-text. Esta classe inclui display: block e adiciona uma margem superior para facilitar o espaçamento das entradas acima.

Senha Sua senha deve ter de 8 a 20 caracteres, conter letras e números e não deve conter espaços, caracteres especiais ou emoji.

O texto embutido pode usar qualquer elemento HTML embutido típico (seja um <small>, <span> ou qualquer outro) com nada mais do que uma classe de utilitário.

Formulários desativados

Adicione o disabled atributo booleano em uma entrada para evitar interações do usuário e fazê-lo aparecer mais leve.

Adicione o disabled atributo para um <fieldset> para desativar todos os controles dentro.

Advertência com âncoras

Por padrão, os navegadores tratam todos os controles de forma nativa (<input>, <select> e <button> elementos) dentro de um <fieldset disabled> como desativado, evitando interações de teclado e mouse neles. No entanto, se o seu formulário também incluir elementos <a ... class="btn btn-*">, eles terão apenas um estilo de pointer-events: none. Conforme observado na seção sobre estado desabilitado para botões (e especificamente na subseção para elementos âncora), esta propriedade CSS ainda não foi padronizada e não é totalmente compatível com Opera 18 e anteriores, ou no Internet Explorer 10, e ganhou não impede que os usuários do teclado sejam capazes de focalizar ou ativar esses links. Portanto, por segurança, use JavaScript personalizado para desativar esses links.

Compatibilidade entre navegadores

Embora o Bootstrap aplique esses estilos em todos os navegadores, Internet Explorer 11 e abaixo não são totalmente compatíveis com o atributo disabled em um <fieldset>. Use JavaScript personalizado para desativar o fieldset nesses navegadores.

Validação

Forneça feedback valioso e acionável para seus usuários com validação de formulário HTML5 – disponível em todos os nossos navegadores suportados. Escolha a partir do feedback de validação padrão do navegador ou implemente mensagens personalizadas com nossas classes integradas e JavaScript inicial.

Recomendamos estilos de validação personalizados, pois os padrões nativos do navegador não são anunciados aos leitores de tela.

Como funciona

Veja como a validação de formulário funciona com Bootstrap:

  • A validação de formulário HTML é aplicada por meio de duas pseudo classes do CSS, :invalid e :valid. Aplica-se aos elementos <input>, <select> e <textarea>.
  • O bootstrap define os estilos :invalid e :valid para a classe .was-validated, geralmente aplicada à classe <form>. Caso contrário, qualquer campo obrigatório sem um valor aparecerá como inválido no carregamento da página. Dessa forma, você pode escolher quando ativá-los (normalmente após a tentativa de envio do formulário).
  • Como alternativa, .is-invalid e .is-valid classes podem ser usadas em vez das pseudo-classes para validação do lado do servidor. Eles não exigem uma .was-validated classe pai.
  • Devido às restrições de funcionamento do CSS, não podemos (no momento) aplicar estilos a <label> que vem antes de um controle de formulário no DOM sem a ajuda de JavaScript personalizado.
  • Todos os navegadores modernos suportam a API de validação de restrição, uma série de métodos JavaScript para validar controles de formulário.
  • As mensagens de feedback podem utilizar os padrões do navegador (diferentes para cada navegador e não estilizados via CSS) ou nossos estilos de feedback personalizados com HTML e CSS adicionais.
  • Você pode fornecer mensagens de validade personalizadas com setCustomValidity em JavaScript.

Com isso em mente, considere as seguintes demos para nossos estilos de validação de formulário personalizado, classes opcionais do lado do servidor e padrões do navegador.

Estilos personalizados

Para mensagens de validação do formulário Bootstrap personalizado, você precisará adicionar o novalidate atributo booleano ao seu <form>. Isso desativa as dicas de ferramentas de feedback padrão do navegador, mas ainda fornece acesso às APIs de validação de formulário em JavaScript. Tente enviar o formulário abaixo; nosso JavaScript interceptará o botão de envio e retransmitirá feedback para você.

Ao tentar enviar, você verá :invalid e :valid estilos aplicados aos controles do formulário.

Padrões do navegador

Não está interessado em mensagens de feedback de validação personalizada ou em escrever JavaScript para alterar o comportamento do formulário? Tudo bem, você pode usar os padrões do navegador. Tente enviar o formulário abaixo. Dependendo do seu navegador e sistema operacional, você verá um estilo ligeiramente diferente de feedback.

Embora esses estilos de feedback não possam ser estilizados com CSS, você ainda pode personalizar o texto do feedback por meio de JavaScript.

Lado do servidor

Recomendamos o uso da validação do lado do cliente, mas caso você precise do lado do servidor, pode indicar campos de formulário inválidos e válidos com .is-invalid e .is-valid. Observe que .invalid-feedback também é compatível com essas classes.

Elementos suportados

Nossos formulários de exemplo mostram <input> s acima, mas estilos de validação de formulário estão disponíveis para nossos controles de formulário personalizados também.

Dicas de ferramentas

Se o layout do formulário permitir, você pode trocar as .{valid|invalid}-feedback classes para .{valid|invalid}-tooltip classes para exibir feedback de validação em uma dica de ferramenta estilizada. Certifique-se de ter um pai com position: relative nele para o posicionamento da dica de ferramenta. No exemplo abaixo, nossas classes de coluna já têm isso, mas seu projeto pode exigir uma configuração alternativa.

Formulários personalizados

Para ainda mais personalização e cruzamento consistência do navegador, use nossos elementos de formulário totalmente personalizados para substituir os padrões do navegador. Eles são construídos com base na marcação semântica e acessível, portanto, são substitutos sólidos para qualquer controle de formulário padrão.

Caixas de seleção e rádios

Cada caixa de seleção e rádio é embrulhado em um <div> com um irmão <span> para criar nosso controle personalizado e um <label> para o texto que o acompanha. Estruturalmente, esta é a mesma abordagem que nosso .form-check padrão.

Usamos o seletor irmão (~) para todos os nossos <input> estados – como :checked – para definir o estilo adequado de nosso indicador de formulário personalizado. Quando combinado com a classe .custom-control-label, também podemos estilizar o texto de cada item com base no estado de <input>.

Ocultamos o <input> padrão com opacity e usamos o .custom-control-label para construir um novo indicador de formulário personalizado em seu lugar com ::before e ::after. Infelizmente, não podemos construir um personalizado apenas a partir do <input> porque content do CSS não funciona nesse elemento.

Nos estados marcados, usamos ícones SVG incorporados em base64 do Open Iconic. Isso nos fornece o melhor controle de estilo e posicionamento em navegadores e dispositivos.

Caixas de seleção

Marque esta caixa de seleção personalizada

Caixas de seleção personalizadas também pode utilizar a :indeterminate pseudo classe quando configurada manualmente via JavaScript (não há atributo HTML disponível para especificá-lo).

Marque esta caixa de seleção personalizada

Se você estiver usando jQuery, algo assim deve bastar:

Rádios

Alternar este rádio personalizado
Ou alternar este outro rádio personalizado

Inline

Alternar este rádio personalizado
Ou alternar este outro rádio personalizado

Desativado

Caixas de seleção e rádios personalizados também podem ser desabilitados. Adicione o disabled atributo booleano ao <input> e o indicador personalizado e a descrição do rótulo serão estilizados automaticamente.

Marque esta caixa de seleção personalizada
Alterne este rádio personalizado

Selecione o menu

Personalizado <select> menus precisam apenas de uma classe personalizada, .custom-select para acionar os estilos personalizados.

Você também pode escolher entre seleções personalizadas pequenas e grandes para corresponder às nossas entradas de texto de tamanho semelhante.

O atributo multiple também é compatível:

Assim como o size atributo:

Navegador de arquivos

A entrada do arquivo é a mais complicada do grupo e requer JavaScript adicional se desejar conectá-los com Escolher arquivo funcional … e texto do nome do arquivo selecionado.

Escolher arquivo

Ocultamos o arquivo padrão <input> por meio de e, em vez disso, estilize o <label>. O botão é gerado e posicionado com ::after. Por último, declaramos width e height no <input> para espaçamento adequado para o conteúdo circundante .

Traduzindo ou personalizando as strings

A :lang() pseudo-classe é usada para permitir a tradução do texto “Navegar” para outro idiomas. Substitua ou adicione entradas à variável $custom-file-text Sass com a tag de idioma relevante e strings localizadas. As strings em inglês podem ser personalizadas da mesma maneira.Por exemplo, pode-se adicionar uma tradução para o espanhol (o código do idioma do espanhol é es):

Aqui está lang(es) em ação na entrada de arquivo personalizado para uma tradução em espanhol:

Selecionar Archivo

Você precisará definir o idioma do seu documento (ou sua subárvore) corretamente para que o texto correto seja mostrado. Isso pode ser feito usando o atributo lang no elemento <html> ou o Content-Language cabeçalho HTTP , entre outros métodos.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *