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 (Cascading Style Sheets) per applicare uno stile ai campi di un modulo, migliorandone la presentazione visiva e l’esperienza utente.
Il blocco moduli adattivi produce una struttura coerente per tutti i campi modulo. La 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 HTML di vari componenti del modulo e spiega come creare selettori CSS per vari campi modulo per assegnare stili ai campi modulo di un blocco moduli adattivi.
Entro la fine dell’articolo:
- Riuscirai a comprendere la struttura del file CSS predefinito incluso in un blocco moduli adattivi.
- Puoi creare e comprendere la struttura HTML dei componenti modulo forniti dal blocco moduli adattivi, inclusi i componenti generali e 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: utilizzati per selezionare più opzioni.
- Gruppi di scelta: utilizzati per selezionare una sola opzione all’interno di un gruppo.
- Elenchi a discesa: noti anche come caselle di selezione, utilizzati per selezionare un’opzione da un elenco.
- Pannelli/contenitori: utilizzati 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 lo stile 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 HTML come un’area di contenuto circondata da riempimenti, bordi e margini.
- Flexbox/Griglia: CSS Flexbox e Layout griglia 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
/blocks/form/form.css file
. 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 il valore predefinito
forms.css
come base e personalizzala per modificare l’aspetto dei componenti del modulo, rendendolo visivamente accattivante e di facile utilizzo. 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 di 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:: questa sezione descrive gli stili dei messaggi di errore o di successo, le aree di caricamento dei file e altri elementi che potrebbero verificarsi 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 pulsanti 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; i trattini consecutivi multipli nel nome vengono sostituiti da un singolo trattino
(-)
e i trattini iniziali e finali nel nome di un campo vengono rimossi. Ad esempio, nome (field-first-name field-wrapper). - {FieldId}: è un identificatore univoco per il campo, generato automaticamente.
- {Obbligatorio}: valore booleano che indica se il campo è obbligatorio.
-
Etichetta: l’elemento
label
fornisce un 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 (Facoltativa): il
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’elemento esternodiv
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 |
---|
|
Di seguito sono elencati alcuni esempi di selettori CSS per i componenti a discesa.
code language-css |
---|
|
- Eseguire il targeting del wrapper: il primo selettore (
.drop-down-wrapper
) esegue il targeting dell’elemento wrapper esterno, assicurando che gli stili vengano applicati all’intero componente del menu a discesa. - Layout flexbox: flexbox dispone l’etichetta, il menu a discesa e la descrizione in verticale per un layout pulito.
- Stile etichetta: l’etichetta si distingue per uno spessore del carattere più audace e un leggero margine.
- Stile a discesa: L'elemento
select
riceve un bordo, una spaziatura interna e angoli arrotondati per ottenere un aspetto ordinato. - Colore di sfondo: viene impostato un colore di sfondo coerente per l’armonia visiva.
- Personalizzazione freccia: gli stili facoltativi nascondono la freccia a discesa predefinita e creano una freccia personalizzata utilizzando un carattere Unicode e il posizionamento.
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 (
) 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à