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 criar estilos de campos de um formulário, aprimorando a apresentação visual de seus formulários e melhorando a experiência do usuário.
O bloco adaptável do Forms produz uma estrutura consistente para todos os campos de formulário. A 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 de 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 de Forms adaptável.
Até o final do artigo:
- Você constrói uma compreensão da estrutura do arquivo CSS padrão incluído no Bloco Forms adaptável.
- Você constrói uma compreensão da estrutura de HTML dos componentes de formulário fornecidos pelo Bloco de Forms adaptável, incluindo componentes gerais e componentes específicos, como listas suspensas, grupos de rádio e grupos de caixas de seleção.
- Você aprende a 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: usado 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 de 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 HTML como uma área de conteúdo cercada por preenchimento, bordas e margens.
- Flexbox/Grade: CSS Flexbox e Layouts de grade são ferramentas poderosas para criar designs responsivos e flexíveis.
Criar um estilo de formulário para o bloco adaptável do Forms
O bloco adaptável de Forms oferece uma estrutura de HTML padronizada, simplificando o processo de seleção e estilização dos componentes de formulário:
-
Atualizar estilos padrão: você pode modificar os estilos padrão de um formulário editando o
/blocks/form/form.css file
. 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-o visualmente atraente e amigável. 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 do 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 de 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 de Forms oferece uma estrutura de HTML consistente 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 detalhamentos, grupos de rádio e grupos de caixas de seleção, têm a seguinte estrutura de 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, os 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}: é o identificador exclusivo do campo, gerado automaticamente.
- {Required}: é um booleano indicando se o campo é obrigatório.
-
Rótulo: o elemento
label
fornece um 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 de HTML
code language-html |
---|
|
code language-css |
---|
|
.{Type}-wrapper
: Direciona o elementodiv
externo com base em o tipo de campo. Por exemplo,.text-wrapper
é direcionado a todo o texto campos..field-{Name}
: Seleciona ainda mais o elemento com base no nome de campo específico. Por exemplo,.field-first-name
destinos o campo de texto "Nome". Embora esse seletor possa ser usado para direcionar elementos com a classe field-{Name}, é importante para ser cauteloso. Nesse caso específico, não seria útil para estilizar campos de entrada porque seria direcionado não apenas para a própria entrada, mas também o rótulo e os elementos de descrição. É recomendável usar seletores mais específicos como os que você tem para direcionar campos de entrada de texto (.text-wrapper entrada).
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 de HTML
code language-html |
---|
|
O CSS a seguir lista alguns exemplos de Seletores de CSS para componentes suspensos.
code language-css |
---|
|
- Direcionar o Wrapper: o primeiro seletor (
.drop-down-wrapper
) direciona o elemento wrapper externo, garantindo que os estilos se apliquem a todo o componente suspenso. - Layout Flexbox: O Flexbox organiza o rótulo, a lista suspensa e a descrição verticalmente para um layout limpo.
- Estilo do rótulo: o rótulo se destaca com uma espessura de fonte mais ousada e uma pequena margem.
- Estilo suspenso: o elemento
select
recebe uma borda, um preenchimento e cantos arredondados para obter uma aparência polida. - Cor do plano de fundo: uma cor de fundo consistente é definida para harmonia visual.
- Personalização de seta: os estilos opcionais ocultam a seta suspensa padrão e criam uma seta personalizada usando um caractere Unicode e o posicionamento.
Grupos de opções
Semelhante aos componentes suspensos, os grupos de rádio têm sua própria estrutura de HTML e estrutura CSS:
code language-html |
---|
|
Exemplo de estrutura de 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 de 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 de 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 de 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 de 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 de 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 de 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 de 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 aos 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
- Publish seu formulário e comece 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