Personalizzare l’aspetto dei moduli
I moduli sono fondamentali per l’interazione degli utenti sui siti web, poiché consentono loro di inserire dati. È possibile utilizzare i fogli di stile CSS per applicare uno stile ai campi modulo, migliorare la presentazione visiva dei moduli e migliorare l'esperienza utente.
Il blocco moduli adattivi produce una struttura coerente per tutti i campi modulo. Questa struttura coerente semplifica lo sviluppo di selettori CSS per selezionare e assegnare uno stile ai campi modulo in base al tipo di campo e ai nomi dei campi.
Questo documento illustra la struttura di HTML per vari componenti di modulo e consente di comprendere come creare selettori CSS per vari campi di modulo per assegnare stili ai campi di modulo di un blocco di Forms adattivo.
Entro la fine dell'articolo:
- Comprendere la struttura del file CSS predefinito incluso in Blocco Forms adattivo
- Acquisisci una conoscenza della struttura HTML dei componenti modulo forniti dal blocco Forms adattivo, inclusi componenti generali e componenti specifici come elenchi a discesa, gruppi di scelta e gruppi di caselle di controllo
- Scopri come assegnare uno stile ai campi modulo in base al tipo di campo e ai nomi di campo utilizzando i selettori CSS, consentendo uno stile coerente o univoco in base ai requisiti
Informazioni sui tipi di campi modulo
Prima di approfondire lo stile, esaminiamo i tipi di campo di un modulo comune supportato dal blocco moduli adattivi:
- Campi di input: includono input di testo, input di e-mail, input di password e altro ancora
- Gruppi di caselle di controllo: utilizzato per selezionare più opzioni
- Gruppi di opzioni: utilizzato per selezionare una sola opzione da un gruppo
- Elenchi a discesa: noti anche come caselle di selezione, utilizzati per selezionare un’opzione da un elenco
- Pannelli/contenitori: utilizzato per raggruppare gli elementi modulo correlati
Principi di base dello stile
La comprensione dei concetti CSS fondamentali è indispensabile prima di applicare uno stile a campi modulo specifici:
- Selettori: i selettori CSS ti consentono di eseguire il targeting di elementi HTML specifici per l’applicazione di uno stile. Puoi utilizzare i selettori di elementi, di classi o di ID
- Proprietà: le proprietà CSS definiscono l’aspetto visivo degli elementi. Le proprietà comuni per la formattazione dei campi modulo includono colore, colore di sfondo, bordo, riempimento, margine e altro ancora
- Modello casella: il modello casella CSS descrive la struttura degli elementi di HTML come un'area di contenuto circondata da spaziature, bordi e margini
- Flexbox/Grid: i layout CSS Flexbox e Grid sono strumenti potenti per la creazione di progettazioni dinamiche e flessibili
Applicazione di uno stile a un modulo per un blocco di moduli adattivi
Il blocco di moduli adattivi offre una struttura HTML standardizzata che semplifica la selezione e lo stile dei componenti dei moduli:
-
Aggiorna stili predefiniti: è possibile modificare gli stili predefiniti di un modulo modificando il file
/blocks/form/form.css
. Questo file offre uno stile completo per un modulo, con supporto per i moduli della procedura guidata in più passaggi. Viene enfatizzato l’utilizzo di variabili CSS personalizzate per una facile modifica, manutenzione e uno stile uniforme tra i moduli. Per istruzioni sull’aggiunta del blocco moduli adattivi al progetto, consulta creare un modulo. -
Personalizzazione: utilizza
forms.css
predefinito come base e personalizzalo per modificare l'aspetto dei componenti del modulo, rendendoli visivamente accattivanti e facili da usare. La struttura del file incoraggia l’organizzazione e mantiene gli stili per i moduli, promuovendo progettazioni coerenti all’interno del sito web.
Raggruppamento della struttura forms.css
-
Variabili globali: definite in corrispondenza del livello
:root
, queste variabili (--variable-name
) memorizzano i valori utilizzati nel foglio di stile per garantire la coerenza e la facilità degli aggiornamenti. Queste variabili definiscono i colori, le dimensioni dei caratteri, la spaziatura interna e altre proprietà. Puoi dichiarare le tue variabili globali o modificare quelle esistenti per modificare lo stile del modulo. -
Stili selettore universale: il
*
selettore corrisponde a ogni elemento del modulo, garantendo che gli stili vengano applicati a tutti i componenti per impostazione predefinita, inclusa l’impostazione dibox-sizing
proprietà aborder-box
. -
Stile modulo: questa sezione si concentra sull’applicazione dello stile ai componenti del modulo utilizzando i selettori per eseguire il targeting di elementi HTML specifici. Definisce gli stili per i campi di input, le aree di testo, le caselle di controllo, i pulsanti di scelta, gli input di file, le etichette dei moduli e le descrizioni.
-
Stile procedura guidata (se applicabile): questa sezione è dedicata allo stile del layout della procedura guidata, un modulo con più passaggi in cui viene visualizzato un passaggio alla volta. Definisce gli stili per il contenitore della procedura guidata, i fieldset, le legende, i pulsanti di navigazione e i layout dinamici.
-
Query multimediali: offrono stili per schermi di diverse dimensioni, con conseguente regolazione del layout e dello stile.
-
Stili vari: In questa sezione vengono illustrati gli stili per i messaggi di errore o di successo, le aree di caricamento dei file e altri elementi che è possibile incontrare in un modulo.
Struttura dei componenti
Il Blocco moduli adattivi offre una struttura HTML coerente per vari elementi del modulo, garantendo così uno stile e una gestione più semplici. Puoi manipolare i componenti utilizzando i CSS a scopo di stile.
Componenti generali (ad eccezione di elenchi a discesa, gruppi di pulsanti di scelta e gruppi di caselle di controllo):
Tutti i campi modulo, ad eccezione di elenchi a discesa, gruppi di scelta e gruppi di caselle di controllo, hanno la seguente struttura HTML:
code language-html |
---|
|
-
Classi: l’elemento div dispone di diverse classi per il targeting di elementi e stili specifici. È necessario che le classi
{Type}-wrapper
ofield-{Name}
sviluppino un selettore CSS per assegnare uno stile a un campo modulo:- {Type}: identifica il componente per tipo di campo. Ad esempio, testo (ritorno a capo automatico), numero (ritorno a capo automatico), data (ritorno a capo automatico)
- {Name}: identifica il componente in base al nome. Il nome del campo può contenere solo caratteri alfanumerici; più trattini consecutivi nel nome vengono sostituiti con un singolo trattino
(-)
e i trattini iniziali e finali in un nome di campo vengono rimossi. Ad esempio, nome (field-first-name field-wrapper) - {FieldId}: è un identificatore univoco per il campo, generato automaticamente
- {Required}: valore booleano che indica se il campo è obbligatorio
-
Etichetta: l'elemento
label
fornisce il testo descrittivo per il campo e lo associa all'elemento di input utilizzando l'attributofor
-
Input: l’elemento
input
definisce il tipo di dati da immettere. Ad esempio, testo, numero, e-mail -
Descrizione (facoltativo):
div
con classefield-description
fornisce informazioni o istruzioni aggiuntive per l'utente
Esempio di struttura HTML
code language-html |
---|
|
code language-css |
---|
|
.{Type}-wrapper
: esegue il targeting dell'elementodiv
esterno in base al tipo di campo. Ad esempio,.text-wrapper
esegue il targeting di tutti i campi di testo.field-{Name}
: seleziona ulteriormente l’elemento in base al nome del campo specifico. Ad esempio:.field-first-name
esegue il targeting del campo di testo “Nome”. Questo selettore può essere utilizzato per eseguire il targeting di elementi con la classe field-{Name}, ma è importante prestare attenzione. In questo caso specifico, non sarebbe utile per la formattazione dei campi di input perché avrebbe come target non solo l’input stesso, ma anche gli elementi etichetta e descrizione. Si consiglia di utilizzare selettori più specifici, come quelli disponibili per il targeting dei campi di input di testo (input .text-wrapper)
Esempio di selettori CSS per componenti generali
code language-css |
---|
|
Componente a discesa
Per i menu a discesa, l’elemento select
viene utilizzato al posto di un elemento input
:
code language-html |
---|
|
Esempio di struttura HTML
code language-html |
---|
|
code language-css |
---|
|
Gruppi pulsanti di scelta
Analogamente ai componenti a discesa, i gruppi pulsanti di scelta dispongono di una propria struttura HTML e CSS:
code language-html |
---|
|
Esempio di struttura HTML
code language-html |
---|
|
- Targeting del set di campi
code language-css |
---|
|
Questo selettore esegue il targeting di qualsiasi set di campi con la classe radio-group-wrapper. Questo sarebbe utile per applicare stili generali all’intero gruppo pulsanti di scelta.
- Targeting delle etichette del pulsante di scelta
code language-css |
---|
|
- Esegui il targeting di tutte le etichette del pulsante di scelta in un set di campi specifico in base al suo nome
code language-css |
---|
|
Gruppi di caselle di controllo
code language-html |
---|
|
Esempio di struttura HTML
code language-html |
---|
|
-
Targeting del wrapper esterno: questi selettori eseguono il targeting dei contenitori dei gruppi pulsanti di scelta e di quelli delle caselle di controllo, consentendo di applicare stili generali all’intera struttura del gruppo. Questo è utile per impostare la spaziatura, l’allineamento o altre proprietà relative al 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 */ }
-
Etichette del gruppo di targeting: questo selettore esegue il targeting dell’elemento
.field-label
all’interno dei wrapper dei gruppi pulsanti di scelta e delle caselle di controllo. Questo consente di applicare uno stile alle etichette specifiche per tali gruppi, rendendoli potenzialmente più evidenti.code language-css .radio-group-wrapper legend, .checkbox-group-wrapper legend { font-weight: bold; /* Makes the group label bold */ }
-
Targeting di singoli input ed etichette: questi selettori forniscono un controllo più dettagliato su singoli pulsanti di scelta, caselle di controllo e le relative etichette associate. Puoi utilizzarli per modificare le dimensioni, la spaziatura o applicare stili visivi più distinti.
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 */ }
-
Personalizzazione dell’aspetto dei pulsanti di scelta e delle caselle di controllo: questa tecnica nasconde l’input predefinito e utilizza pseudo-elementi
:before
e:after
per creare elementi visivi personalizzati che cambiano aspetto in base allo stato “selezionato”.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 ... */ }
Componenti pannello/contenitore
code language-html |
---|
|
Esempio di struttura HTML
code language-html |
---|
|
- L’elemento fieldset funge da contenitore del pannello con la classe panel-wrapper e classi aggiuntive per lo stile in base al nome del pannello (field-login).
- L’elemento legend (<legend>) funge da titolo del pannello con il testo “Informazioni di accesso” e la classe field-label. L’attributo data-visible="false" può essere utilizzato con JavaScript per controllare la visibilità del titolo.
- All’interno del fieldset, piùelementi wrapper {Type} (.text-wrapper e .password-wrapper in questo caso) rappresentano singoli campi modulo all’interno del pannello.
- Ogni wrapper contiene un’etichetta, un campo di input e una descrizione, simili agli esempi precedenti.
- Targeting del pannello:
code language-css |
---|
|
- il selettore
.panel-wrapper
assegna a tutti gli elementi uno stile basato sulla classe panel-wrapper, creando un aspetto coerente per tutti i pannelli.
- Targeting del titolo del pannello:
code language-css |
---|
|
- il selettore
.panel-wrapper legend
applica uno stile all’elemento legend all’interno del pannello, rendendo il titolo evidente.
- Esecuzione del targeting di singoli campi all’interno del pannello:
code language-css |
---|
|
- il selettore
.panel-wrapper .{Type}-wrapper
esegue il targeting di tutti i wrapper con la classe.{Type}-wrapper
all’interno del pannello, che consente di applicare uno stile alla spaziatura tra i campi modulo.
- Targeting di campi specifici (facoltativo):
code language-css |
---|
|
- questi selettori facoltativi consentono di eseguire il targeting di wrapper di campi specifici all’interno del pannello per uno stile univoco, ad esempio per evidenziare il campo del nome utente.
Pannello ripetibile
code language-html |
---|
|
Esempio di struttura HTML
code language-html |
---|
|
Ogni pannello ha la stessa struttura dell’esempio di pannello singolo, con attributi aggiuntivi:
-
data-Repeable="true": questo attributo indica che il pannello può essere ripetuto dinamicamente utilizzando JavaScript o un framework.
-
ID e nomi univoci: ogni elemento all’interno del pannello ha un ID univoco (ad esempio, nome-1, e-mail-1) e un attributo del nome basato sull’indice del pannello (ad esempio, nome="contacts[0].name"). Questo consente una corretta raccolta dei dati quando vengono inviati più pannelli.
- Targeting di tutti i pannelli ripetibili:
code language-css |
---|
|
il selettore applica uno stile a tutti i pannelli che possono essere ripetuti, assicurando un aspetto coerente.
- Targeting di singoli campi all’interno di un pannello:
code language-css |
---|
|
questo selettore applica uno stile a tutti i wrapper del campo all’interno di un pannello ripetibile, mantenendo una spaziatura coerente tra i campi.
- Targeting di campi specifici (all’interno di un pannello):
code language-css |
---|
|
Allegato file
code language-html |
---|
|
Esempio di struttura HTML
code language-html |
---|
|
- L’attributo della classe utilizza il nome fornito per l’allegato file (claim_form).
- Gli attributi ID e nome dell’elemento di input corrispondono al nome dell’allegato (claim_form).
- La sezione dell’elenco dei file è inizialmente vuota. Viene compilato dinamicamente con JavaScript quando i file vengono caricati.
- Esecuzione del targeting dell'intero componente allegato file:
code language-css |
---|
|
Questo selettore imposta lo stile dell’intero componente allegato file, inclusi la legenda, l’area di trascinamento, il campo di input e l’elenco.
- Targeting di elementi specifici:
code language-css |
---|
|
Questi selettori consentono di applicare uno stile a varie parti del componente di file allegato. È possibile modificare gli stili in base alle preferenze di progettazione.
Componenti di stile
È possibile assegnare uno stile ai campi modulo in base al tipo specifico ({Type}-wrapper
) o nomi individuali (field-{Name}
). Ciò consente un controllo più granulare e la personalizzazione dell’aspetto del modulo.
Stile basato sul tipo di campo
Puoi utilizzare i selettori CSS per eseguire il targeting di tipi di campo specifici e applicare gli stili in modo coerente.
code language-html |
---|
|
Esempio di struttura HTML
code language-html |
---|
|
-
Ogni campo è racchiuso in un elemento
div
con diverse classi:{Type}-wrapper
: identifica il tipo di campo. Ad esempio,form-text-wrapper
,form-number-wrapper
eform-email-wrapper
.field-{Name}
: identifica il campo in base al nome. Ad esempio,form-name
,form-age
eform-email
.field-wrapper
: classe generica per tutti i wrapper di campi.
-
L’attributo
data-required
indica se il campo è obbligatorio o facoltativo. -
Ogni campo ha un’etichetta corrispondente, un elemento di input e potenziali elementi aggiuntivi come segnaposto e descrizioni.
code language-css |
---|
|
Stile basato sul nome del campo
Per applicare stili univoci, puoi anche eseguire il targeting di singoli campi per nome.
code language-html |
---|
|
Esempio di struttura HTML
code language-html |
---|
|
code language-css |
---|
|
Questo CSS esegue il targeting di tutti gli elementi di input che si trovano all’interno di un elemento che ha la classe field-otp
. La struttura HTML del modulo segue le convenzioni del Blocco moduli adattivi. Ciò implica che esiste un contenitore contrassegnato con la classe “field-otp” che contiene il campo con il nome “otp”.
Consulta anche
- Guida introduttiva a Edge Delivery Services per AEM Forms
- Creare un modulo utilizzando Google Sheets o Microsoft Excel
- Impostare i fogli di Google o i file di Microsoft Excel per iniziare ad accettare i dati
- Pubblicare il modulo e iniziare a raccogliere i dati
- Personalizzare l’aspetto dei moduli
- Aggiungere sezioni ripetibili a un modulo
- Mostra un messaggio di ringraziamento personalizzato dopo l’invio del modulo
- Componenti del blocco modulo adattivo e relative proprietà
- Utilizzo del servizio di invio moduli