Estilização de formulários com CSS puro (avançado)

Conheça maneiras para estilizar formulários com CSS puro e aproveitar os recursos nativos de CSS.

Ir para o artigo

Estilizar formulários HTML sempre foi notoriamente difícil (e chato) de se fazer com CSS, mas existem vários seletores pouco usados ​​que ajudam de maneira significativa para estilizar formulários com CSS puro.

:placeholder-shown

Estilizar formulário com CSS puro: estilização feita com :placeholder-shown.

:placeholder-shown é relativamente novo e permite detectar se um placeholder está atualmente visível para o usuário. Isso pode ser útil em situações como ocultar e mostrar dinamicamente o label associado ao input.

Neste exemplo, o label é ocultado até que o usuário comece a digitar alguma coisa, ocultando assim o placeholder.

Observe que, para que este técnica funcione, o label deve vir depois do input. Mas também seria possível inverter a ordem com o input e fazer a estilização com :has() da seguinte forma:

Se ainda não conhece o seletor :has(), confira nosso vídeo:

:required

Estilizar formulário com CSS puro: estilização feita com :required.

O seletor :required para indicar que um input possui o atributo required (obrigatório).

Comumente, isso seria feito com JavaScript, mas este exemplo demonstra uma abordagem de estilização de formulário com CSS puro.

:optional

Estilizar formulário com CSS puro: estilização feita com :optional.

O seletor :optional faz o oposto de :required, servindo para estilizar inputs de formulário que não sejam obrigatórios.

Imaginando uma estrutura HTML semelhante à do exemplo anterior, o CSS ficaria:

:disabled

Estilizar formulário com CSS puro: estilização feita com :disabled.

Como a maioria deve saber, :disabled é essencial para mostrar se um input está desabilitado ou não.

Ele é familiar para a maioria dos devs, mas, ainda assim, é importante ser citado em um artigo sobre estilização de formulários com CSS puro.

:read-only

Estilizar formulário com CSS puro: estilização feita com :read-only.

Um input com o atributo readonly deve transmitir um significado ligeiramente diferente (portanto, uma estilização diferente) de um input desabilitado. Felizmente, existe o seletor :read-only para ajudar com isso.

:valid

Estilizar formulário com CSS puro: estilização feita com :valid.

Embora grande parte da validação de formulários seja feita com JavaScript, é possível aproveitar as vantagens da validação de formulário nativas de HTML e estilizar com CSS puro.

O seletor :valid oferece a oportunidade de se estilizar qualquer input que passou pelas regras de validação nativas do navegador.

Por exemplo, é possível usar background-image para exibir uma imagem de check, indicando que um campo passou pela validação.

:invalid

Estilizar formulário com CSS puro: estilização feita com :invalid.

Este seletor :invalid verifica se uma entrada não está passando pelas regras de validação nativas do navegador (por exemplo, se uma entrada de e-mail não contém um e-mail real).

É possível exibir uma imagem, como no exemplo anterior:

Ou personalizar algumas mensagens de validação para cada tipo de input usando marcação auxiliar e pseudo-elementos.

:in-range/:out-of-range

Estilizar formulário com CSS puro: estilização feita com :in-range e :out-of-range.

Os seletores :in-range e :out-of-range detectam se o valor de um input numérico está dentro dos valores min e max especificados ou não.

:checked

Estilizar formulário com CSS puro: estilização feita com :checked.

A maioria dos devs está familiarizada com o seletor :checked, que permite aplicar estilos personalizados a checkboxes e radios quando marcados.

Ele torna possível realizar estilização de formulários com CSS puro de muitas maneiras: com elementos auxiliares, usando seletores avançados, :has() etc.

Aproveite recursos nativos para estilizar formulários com CSS puro

A estilização de formulários com CSS puro é conhecida e aproveitada por muitos devs. Aliás, é altamente indicado que você também faça uso desses recursos.

Afinal, o próprio HTML e CSS evoluíram (e evoluem) para fornecerem recursos para que interações e estilizações nativos possam ser usados da melhor maneira possível.

Usamos cookies para melhorar sua experiência e para ajudar a entender como nosso site é usado. Ao utilizar este site, você aceita o uso de cookies. Consulte nossa política de privacidade para obter mais informações.