Personalizar a aparência dos formulários
O Forms é fundamental para a interação do usuário em sites, permitindo que ele insira dados. Você pode usar as Folhas de estilo em cascata (CSS) para estilizar campos de formulário, aprimorar a apresentação visual de seus formulários e melhorar a experiência do usuário.
O bloco adaptável do Forms produz uma estrutura consistente para todos os campos de formulário. Essa estrutura consistente facilita o desenvolvimento de Seletores de CSS para selecionar e estilizar campos de formulário com base no tipo de campo e nos nomes de campo.
Este documento descreve a estrutura do HTML para vários componentes de formulário e ajuda a criar um entendimento de como criar Seletores de CSS para vários campos de formulário para estilizar campos de formulário de um bloco adaptável do Forms.
Ao final do artigo, você irá:
- Criar uma compreensão da estrutura do arquivo CSS padrão incluído no Bloco do Forms adaptável
- Desenvolva uma compreensão da estrutura de HTML dos componentes de formulário fornecidos pelo bloco adaptável de Forms, incluindo componentes gerais e componentes específicos, como menus suspensos, grupos de rádio e grupos de caixas de seleção
- Saiba como estilizar campos de formulário com base no tipo de campo e nos nomes de campo usando Seletores de CSS, permitindo um estilo consistente ou exclusivo com base nos requisitos
Noções básicas sobre tipos de campos de formulário
Antes de mergulhar no estilo, vamos rever os tipos de campo de formulário comuns compatíveis com o Bloco de Forms adaptável:
- Campos de entrada: incluem entradas de texto, entradas de email, entradas de senha e muito mais
- Grupos de caixas de seleção: usado para selecionar várias opções
- Grupos de opções: usados para selecionar apenas uma opção de um grupo
- Menus suspensos: também conhecido como caixas de seleção, usadas para selecionar uma opção de uma lista
- Painéis/Contêineres: usados para agrupar elementos de formulário relacionados
Princípios básicos de estilo
Entender os conceitos CSS fundamentais é fundamental antes de estilizar campos de formulário específicos:
- Seletores: os Seletores de CSS permitem direcionar elementos HTML específicos para o estilo. Você pode usar seletores de elemento, seletores de classe ou seletores de ID
- Propriedades: as propriedades CSS definem a aparência visual dos elementos. As propriedades comuns para os campos de formulário de estilo incluem cor, cor de fundo, borda, preenchimento, margem e muito mais
- Modelo de caixa: o modelo de caixa CSS descreve a estrutura dos elementos do HTML como uma área de conteúdo cercada por preenchimento, bordas e margens
- Flexbox/Grade: CSS Flexbox e Layouts de grade são ferramentas eficientes para criar designs responsivos e flexíveis
Criar um estilo de formulário para o bloco adaptável do Forms
O bloco Forms adaptável oferece uma estrutura HTML padronizada, simplificando o processo de seleção e estilo de componentes de formulário:
-
Atualizar estilos padrão: você pode modificar os estilos padrão de um formulário editando o arquivo
/blocks/form/form.css
. Esse arquivo fornece um estilo abrangente para um formulário, compatível com formulários de assistente de várias etapas. Ela enfatiza o uso de variáveis CSS personalizadas para facilitar a personalização, a manutenção e o estilo uniforme em todos os formulários. Para obter instruções sobre como adicionar o Bloco Adaptive Forms ao seu projeto, consulte criar um formulário. -
Personalização: Use o
forms.css
padrão como base e personalize-o para modificar a aparência dos componentes do formulário, tornando-os visualmente atraentes e amigáveis. A estrutura do arquivo incentiva a organização e mantém estilos para formulários, promovendo designs consistentes em todo o site.
Detalhamento da estrutura forms.css
-
Variáveis globais: definidas no nível
:root
, essas variáveis (--variable-name
) armazenam valores usados em toda a folha de estilos para garantir consistência e facilidade de atualizações. Essas variáveis definem cores, tamanhos de fonte, preenchimento e outras propriedades. Você pode declarar suas próprias variáveis globais ou modificar as existentes para alterar o estilo do formulário. -
Estilos de seletor universal: o seletor
*
corresponde a cada elemento do formulário, garantindo que os estilos sejam aplicados a todos os componentes por padrão, incluindo a configuração da propriedadebox-sizing
comoborder-box
. -
Estilo de formulário: essa seção se concentra no estilo de componentes de formulário usando seletores para direcionar elementos HTML específicos. Ele define estilos para campos de entrada, áreas de texto, caixas de seleção, botões de opção, entradas de arquivo, rótulos de formulário e descrições.
-
Estilo do assistente (se aplicável): esta seção é dedicada ao estilo do layout do assistente, um formulário de várias etapas no qual cada etapa é exibida, uma de cada vez. Ele define estilos para o contêiner do assistente, conjuntos de campos, legendas, botões de navegação e layouts responsivos.
-
Consultas de mídia: fornecem estilos para diferentes tamanhos de tela, ajustando o layout e o estilo de acordo.
-
Estilos diversos: esta seção aborda estilos para mensagens de erro ou êxito, áreas de carregamento de arquivo e outros elementos que você possa encontrar em um formulário.
Estrutura de componentes
O bloco adaptável do Forms oferece uma estrutura consistente do HTML para vários elementos de formulário, garantindo um estilo e gerenciamento mais fáceis. É possível manipular os componentes usando o CSS para fins de estilo.
Componentes gerais (exceto menus suspensos, grupos de rádio e grupos de caixas de seleção):
Todos os campos de formulário, exceto os menus suspensos, grupos de opções e grupos de caixas de seleção, têm a seguinte estrutura HTML:
code language-html |
---|
|
-
Classes: o elemento div tem várias classes para direcionar elementos específicos e estilo. Você precisa das classes
{Type}-wrapper
oufield-{Name}
para desenvolver um Seletor de CSS para estilizar um campo de formulário:- {Type}: Identifica o componente por tipo de campo. Por exemplo, texto (invólucro de texto), número (invólucro numérico), data (invólucro de data)
- {Name}: Identifica o componente por nome. O nome do campo pode ter apenas caracteres alfanuméricos; vários traços consecutivos no nome são substituídos por um único traço
(-)
e os traços inicial e final em um nome de campo são removidos. Por exemplo, nome (field-first-name field-wrapper) - {FieldId}: é um identificador exclusivo do campo, gerado automaticamente
- {Required}: é um booleano indicando se o campo é obrigatório
-
Rótulo: o elemento
label
fornece texto descritivo para o campo e o associa ao elemento de entrada usando o atributofor
-
Entrada: o elemento
input
define o tipo de dados a serem inseridos. Por exemplo, texto, número, email -
Descrição (Opcional): O
div
com classefield-description
fornece informações ou instruções adicionais para o usuário
Exemplo de estrutura HTML
code language-html |
---|
|
code language-css |
---|
|
.{Type}-wrapper
: Direciona o elementodiv
externo com base no tipo de campo. Por exemplo,.text-wrapper
é direcionado a todos os campos de texto.field-{Name}
: Seleciona ainda mais o elemento com base no nome do campo específico. Por exemplo,.field-first-name
é direcionado ao campo de texto "Nome". Embora esse seletor possa ser usado para direcionar elementos com a classe field-{Name}, é importante ter cuidado. Nesse caso específico, não seria útil para estilizar campos de entrada, pois direcionaria não apenas a própria entrada, mas também os elementos de rótulo e descrição. É recomendável usar seletores mais específicos como os que você tem para direcionar campos de entrada de texto (entrada .text-wrapper)
Exemplo de Seletores de CSS para Componentes Gerais
code language-css |
---|
|
Componente suspenso
Para menus suspensos, o elemento select
é usado em vez de um elemento input
:
code language-html |
---|
|
Exemplo de estrutura do HTML
code language-html |
---|
|
code language-css |
---|
|
Grupos de opções
Semelhante aos componentes suspensos, os grupos de rádio têm sua própria estrutura HTML e estrutura CSS:
code language-html |
---|
|
Exemplo de estrutura do HTML
code language-html |
---|
|
- Direcionamento do conjunto de campos
code language-css |
---|
|
Este seletor segmenta qualquer conjunto de campos com a classe radio-group-wrapper. Isso seria útil para aplicar estilos gerais a todo o grupo de rádio.
- Rótulos do botão de opção de direcionamento
code language-css |
---|
|
- Direcionar todos os rótulos de botão de opção em um conjunto de campos específico com base em seu nome
code language-css |
---|
|
Grupos de caixas de seleção
code language-html |
---|
|
Exemplo de estrutura do HTML
code language-html |
---|
|
-
Direcionamento do Outer Wrapper: esses seletores direcionam os contêineres mais externos dos grupos de rádio e de caixa de seleção, permitindo aplicar estilos gerais a toda a estrutura do grupo. Isso é útil para definir o espaçamento, alinhamento ou outras propriedades relacionadas ao layout.
code language-css /* Targets radio group wrappers */ .radio-group-wrapper { margin-bottom: 20px; /* Adds space between radio groups */ } /* Targets checkbox group wrappers */ .checkbox-group-wrapper { margin-bottom: 20px; /* Adds space between checkbox groups */ }
-
Rótulos do grupo de direcionamento: esse seletor direciona o elemento
.field-label
aos invólucros do grupo de caixas de seleção e de rádio. Isso permite estilizar os rótulos especificamente para esses grupos, possivelmente fazendo com que eles se destaquem mais.code language-css .radio-group-wrapper legend, .checkbox-group-wrapper legend { font-weight: bold; /* Makes the group label bold */ }
-
Direcionamento de entradas e rótulos individuais: esses seletores fornecem controle mais granular sobre botões de opção individuais, caixas de seleção e seus rótulos associados. Você pode usá-los para ajustar o dimensionamento, o espaçamento ou aplicar estilos visuais mais distintos.
code language-css /* Styling radio buttons */ .radio-group-wrapper input[type="radio"] { margin-right: 5px; /* Adds space between the input and its label */ } /* Styling radio button labels */ .radio-group-wrapper label { font-size: 15px; /* Changes the label font size */ } /* Styling checkboxes */ .checkbox-group-wrapper input[type="checkbox"] { margin-right: 5px; /* Adds space between the input and its label */ } /* Styling checkbox labels */ .checkbox-group-wrapper label { font-size: 15px; /* Changes the label font size */ }
-
Personalização da aparência de botões de opção e caixas de seleção: essa técnica oculta a entrada padrão e usa pseudoelementos
:before
e:after
para criar visuais personalizados que alteram a aparência com base no estado "marcado".code language-css /* Hide the default radio button or checkbox */ .radio-group-wrapper input[type="radio"], .checkbox-group-wrapper input[type="checkbox"] { opacity: 0; position: absolute; } /* Create a custom radio button */ .radio-group-wrapper input[type="radio"] + label::before { /* ... styles for custom radio button ... */ } .radio-group-wrapper input[type="radio"]:checked + label::before { /* ... styles for checked radio button ... */ } /* Create a custom checkbox */ /* Similar styling as above, with adjustments for a square shape */ .checkbox-group-wrapper input[type="checkbox"] + label::before { /* ... styles for custom checkbox ... */ } .checkbox-group-wrapper input[type="checkbox"]:checked + label::before { /* ... styles for checked checkbox ... */ }
Componentes de painel/contêiner
code language-html |
---|
|
Exemplo de estrutura do HTML
code language-html |
---|
|
- O elemento fieldset atua como o contêiner do painel com o invólucro de painel de classe e classes adicionais para estilização com base no nome do painel (logon de campo).
- O elemento da legenda (<legend>) serve como o título do painel com o texto "Informações de logon" e o rótulo de campo da classe. O atributo data-visible="false" pode ser usado com o JavaScript para controlar a visibilidade do título.
- Dentro do conjunto de campos, vários .Os elementos {Type}-wrapper (.text-wrapper e .password-wrapper, neste caso) representam campos de formulário individuais dentro do painel.
- Cada invólucro contém um rótulo, campo de entrada e descrição, semelhantes aos exemplos anteriores.
- Direcionamento do painel:
code language-css |
---|
|
- O seletor
.panel-wrapper
estiliza todos os elementos com o invólucro de painel de classe, criando uma aparência consistente para todos os painéis.
- Direcionamento do título do painel:
code language-css |
---|
|
- O seletor
.panel-wrapper legend
estiliza o elemento de legenda dentro do painel, fazendo com que o título se destaque visualmente.
- Direcionamento de campos individuais no painel:
code language-css |
---|
|
- O seletor
.panel-wrapper .{Type}-wrapper
é direcionado a todos os invólucros com a classe.{Type}-wrapper
dentro do painel, permitindo que você estilize o espaçamento entre os campos de formulário.
- Direcionamento de campos específicos (opcional):
code language-css |
---|
|
- Esses seletores opcionais permitem direcionar wrappers de campo específicos no painel para um estilo exclusivo, como realçar o campo de nome de usuário.
Painel repetível
code language-html |
---|
|
Exemplo de estrutura do HTML
code language-html |
---|
|
Cada painel tem a mesma estrutura que o exemplo de painel único, com atributos adicionais:
-
data-repeat="true": este atributo indica que o painel pode ser repetido dinamicamente usando o JavaScript ou uma estrutura.
-
IDs e nomes exclusivos: cada elemento no painel tem um ID exclusivo (por exemplo, name-1, email-1) e um atributo de nome com base no índice do painel (por exemplo, name="contacts[0].name"). Isso permite a coleta de dados adequada quando vários painéis são enviados.
- Direcionamento de todos os painéis repetíveis:
code language-css |
---|
|
O seletor estimula todos os painéis que podem ser repetidos, garantindo uma aparência consistente.
- Direcionamento de campos individuais em um painel:
code language-css |
---|
|
Este seletor estimula todos os invólucros de campo em um painel repetível, mantendo um espaçamento consistente entre os campos.
- Direcionamento de campos específicos (em um painel):
code language-css |
---|
|
Anexo de arquivo
code language-html |
---|
|
Exemplo de estrutura do HTML
code language-html |
---|
|
- O atributo de classe usa o nome fornecido para o anexo de arquivo (claim_form).
- Os atributos id e name do elemento de entrada correspondem ao nome do anexo de arquivo (claim_form).
- A seção da lista de arquivos está inicialmente vazia. Ele é preenchido dinamicamente com o JavaScript quando os arquivos são carregados.
- Direcionar todo o componente de anexo de arquivo:
code language-css |
---|
|
Este seletor estimula todo o componente de anexo do arquivo, incluindo a legenda, a área de arrastar, o campo de entrada e a lista.
- Direcionamento de elementos específicos:
code language-css |
---|
|
Esses seletores permitem estilizar várias partes do componente de anexo de arquivo individualmente. É possível ajustar os estilos para corresponder às suas preferências de design.
Componentes de estilo
Você pode estilizar campos de formulário com base em seu tipo específico ({Type}-wrapper
) ou nomes individuais (field-{Name}
). Isso permite um controle mais granular e a personalização da aparência do formulário.
Estilo com base no tipo de campo
Você pode usar os Seletores de CSS para direcionar tipos de campo específicos e aplicar estilos de forma consistente.
code language-html |
---|
|
Exemplo de estrutura do HTML
code language-html |
---|
|
-
Cada campo é colocado em um elemento
div
com várias classes:{Type}-wrapper
: Identifica o tipo de campo. Por exemplo,form-text-wrapper
,form-number-wrapper
,form-email-wrapper
.field-{Name}
: Identifica o campo pelo seu nome. Por exemploform-name
,form-age
,form-email
.field-wrapper
: uma classe genérica para todos os wrappers de campo.
-
O atributo
data-required
indica se o campo é obrigatório ou opcional. -
Cada campo tem um rótulo correspondente, elemento de entrada e possíveis elementos adicionais, como espaços reservados e descrições.
code language-css |
---|
|
Estilo com base no nome do campo
Você também pode direcionar campos individuais por nome para aplicar estilos exclusivos.
code language-html |
---|
|
Exemplo de estrutura do HTML
code language-html |
---|
|
code language-css |
---|
|
Este CSS destina-se a todos os elementos de entrada localizados em um elemento que tem a classe field-otp
. A estrutura do HTML do seu formulário segue as convenções do Bloco de Forms adaptável, isso implica que há um container marcado com a classe "field-otp" que contém o campo com o nome "otp".
Consulte também:
- Introdução ao Edge Delivery Services para AEM Forms
- Criar um formulário usando o Google Sheets ou o Microsoft Excel
- Configure seus arquivos do Google Sheets ou do Microsoft Excel para começar a aceitar dados
- Publicar seu formulário e começar a coletar dados
- Personalize a aparência de seus formulários
- Adicionar seções repetíveis a um formulário
- Mostrar uma mensagem de agradecimento personalizada após o envio do formulário
- Componentes de bloco de formulário adaptável e suas propriedades
- Uso do serviço de envio de formulários