Anpassa utseendet på formulären
Forms är avgörande för användarinteraktion på webbplatser, så att de kan mata in data. Du kan använda CSS (Cascading Style Sheets) för att formatera fält i ett formulär, förbättra den visuella presentationen av formulären och förbättra användarupplevelsen.
Det adaptiva Forms-blocket ger en konsekvent struktur för alla formulärfält. Den konsekventa strukturen gör det enklare att utveckla CSS-väljare för att markera och formatera formulärfält baserat på fälttyp och fältnamn.
I det här dokumentet beskrivs HTML-strukturen för olika formulärkomponenter, så att du kan skapa en förståelse för hur du skapar CSS-väljare för olika formulärfält för att formatera formulärfält i ett adaptivt Forms-block.
I slutet av artikeln:
- Du bygger upp en förståelse för strukturen i standardfilen för CSS som ingår i det adaptiva Forms-blocket.
- Du bygger upp en förståelse för HTML-strukturen för formulärkomponenter som tillhandahålls av det adaptiva Forms-blocket, inklusive allmänna komponenter och specifika komponenter som listrutor, alternativgrupper och kryssrutegrupper.
- Du lär dig att formatera formulärfält baserat på fälttyp och fältnamn med hjälp av CSS-väljare, vilket ger en konsekvent eller unik formatering baserat på krav.
Förstå formulärfältstyper
Innan vi börjar dyka upp i en formatmall ska vi granska den gemensamma formulärtypen fälttyper som stöds av det adaptiva Forms-blocket:
- Indatafält: Dessa innehåller textinmatningar, e-postinmatningar, lösenordsinmatningar med mera.
- Kryssrutegrupper: Används för att välja flera alternativ.
- Alternativgrupper: Används för att endast välja ett alternativ från en grupp.
- Listrutor: Kallas även urvalsrutor, som används för att välja ett alternativ i en lista.
- Paneler/behållare: Används för att gruppera relaterade formulärelement.
Grundläggande formatprinciper
Att förstå grundläggande CSS-koncept är avgörande innan du formaterar specifika formulärfält:
- Väljare: Med CSS-väljare kan du ange specifika HTML-element för formatering som mål. Du kan använda elementväljare, klassväljare eller ID-väljare.
- Egenskaper: CSS-egenskaper definierar elementens visuella utseende. Vanliga egenskaper för formatformulärfält är bland annat färg, bakgrundsfärg, kant, utfyllnad, marginal.
- Rutmodell: CSS-rutmodellen beskriver strukturen för element i HTML som ett innehållsområde omgivet av utfyllnad, kanter och marginaler.
- Flexbox/Grid: CSS Flexbox och Grid layouts är kraftfulla verktyg för att skapa responsiva och flexibla designer.
Formatera ett formulär för Adaptive Forms Block
Det adaptiva Forms-blocket har en standardiserad HTML-struktur som förenklar processen att markera och formatera formulärkomponenter:
-
Uppdatera standardformat: Du kan ändra standardformaten för ett formulär genom att redigera
/blocks/form/form.css file
. Den här filen innehåller omfattande formatering för ett formulär med stöd för guideformulär i flera steg. Det är viktigt att du använder anpassade CSS-variabler för enkel anpassning, underhåll och enhetlig formatering i olika formulär. Instruktioner om hur du lägger till det adaptiva Forms-blocket i ditt projekt finns i Skapa ett formulär. -
Anpassning: Använd standardvärdet
forms.css
som bas och anpassa det för att ändra utseendet och känslan hos dina formulärkomponenter, så att det blir visuellt tilltalande och användarvänligt. Filens struktur uppmuntrar organisationen och bevarar format för formulär, vilket ger en enhetlig design på hela webbplatsen.
Uppdelning av forms.css struktur
-
Globala variabler: Dessa variabler (
--variable-name
) är definierade på:root
-nivå och lagrar värden som används i hela formatmallen för att vara konsekventa och för att underlätta uppdateringar. Dessa variabler definierar färger, teckenstorlekar, utfyllnad och andra egenskaper. Du kan deklarera dina egna globala variabler eller ändra befintliga variabler för att ändra formulärets format. -
Universella väljarformat:
*
Väljaren matchar alla element i formuläret och ser till att format tillämpas på alla komponenter som standard, inklusive inställning av egenskapenbox-sizing
tillborder-box
. -
Formulärformat: Det här avsnittet fokuserar på att formatera formulärkomponenter med väljare för att ange specifika HTML-element. Här definieras format för inmatningsfält, textområden, kryssrutor, alternativknappar, filinmatningar, formuläretiketter och beskrivningar.
-
Ställning av guiden (om tillämpligt): Det här avsnittet används för att utforma guidelayouten, ett flerstegsformulär där varje steg visas ett i taget. Den definierar format för guidebehållaren, fältuppsättningar, teckenförklaringar, navigeringsknappar och responsiva layouter.
-
Mediefrågor: Dessa innehåller format för olika skärmstorlekar och justerar layout och format utifrån detta.
-
Diverse formatering:: Det här avsnittet innehåller formatmallar för lyckade eller felmeddelanden, områden för filöverföring och andra element som du kan stöta på i ett formulär.
Komponentstruktur
Det adaptiva Forms-blocket har en enhetlig HTML-struktur för olika formulärelement, vilket gör det enklare att formatera och hantera. Du kan ändra komponenterna med CSS i formateringssyfte.
Allmänna komponenter (utom listrutor, alternativknappar och kryssrutegrupper):
Alla formulärfält, utom listrutor, alternativgrupper och kryssrutegrupper, har följande HTML-struktur:
code language-html |
---|
|
-
Klasser: div-elementet har flera klasser för att rikta specifika element och format. Du kräver att klasserna
{Type}-wrapper
ellerfield-{Name}
utvecklar en CSS-väljare för att formatera ett formulärfält:- {Type}: Identifierar komponenten efter fälttyp. Exempel: text (text-wrapper), tal (number-wrapper), datum (date-wrapper).
- {Name}: Identifierar komponenten efter namn. Fältets namn kan bara innehålla alfanumeriska tecken, de flera på varandra följande strecken i namnet ersätts med ett enda streck
(-)
och inledande och avslutande streck i ett fältnamn tas bort. Förnamn (field-first-name field-wrapper). - {FieldId}: Det är en unik identifierare för fältet, som genereras automatiskt.
- {Required}: Det är ett booleskt värde som anger om fältet är obligatoriskt.
-
Etikett: Elementet
label
innehåller en beskrivande text för fältet och associerar det med indataelementet med attributetfor
. -
Indata: Elementet
input
definierar vilken typ av data som ska anges. Till exempel text, tal, e-post. -
Beskrivning (valfritt):
div
med klassenfield-description
innehåller ytterligare information eller instruktioner för användaren.
Exempel på HTML-struktur
code language-html |
---|
|
code language-css |
---|
|
.{Type}-wrapper
: Målar det yttrediv
-elementet baserat på fälttypen..text-wrapper
anger till exempel all text som mål fält..field-{Name}
: Markerar elementet ytterligare baserat på specifikt fältnamn. Exempel:.field-first-name
mål textfältet"Förnamn". När den här väljaren kan användas för mål-element med klassen field-{Name}, det är viktigt att vara försiktig. I det här specifika fallet skulle det inte vara användbart för formatering av indatafält eftersom det inte bara skulle ha som mål själva inmatningen men även etikett- och beskrivningselementen. Vi rekommenderar att du använder mer specifika väljare, som de du har för textinmatningsfält (.text-wrapper) indata).
Exempel på CSS-väljare för allmänna komponenter
code language-css |
---|
|
Listrutekomponent
I listrutor används elementet select
i stället för ett input
-element:
code language-html |
---|
|
Exempel på HTML-struktur
code language-html |
---|
|
Följande CSS visar några exempel på CSS-väljare för nedrullningsbara komponenter.
code language-css |
---|
|
- Ange som mål för wrapper: Den första väljaren (
.drop-down-wrapper
) anger det yttre wrapper-elementet som mål, vilket garanterar att formaten tillämpas på hela listrutekomponenten. - Flexbox Layout: Flexbox ordnar etiketten, listrutan och beskrivningen lodrätt för en ren layout.
- Etikettformatering: Etiketten sticker ut med en större teckensnittsvikt och en liten marginal.
- Formatering i listrutor: Elementet
select
får en kantlinje, utfyllnad och rundade hörn för en elegant look. - Bakgrundsfärg: En konsekvent bakgrundsfärg ställs in för visuell harmoni.
- Anpassning av pilar: Valfria format döljer den nedrullningsbara standardpilen och skapar en anpassad pil med Unicode-tecken och placering.
Alternativgrupper
Ungdomsgrupper har en egen HTML-struktur och CSS-struktur, ungefär som i listrutekomponenter:
code language-html |
---|
|
Exempel på HTML-struktur
code language-html |
---|
|
- Ange fältuppsättningen
code language-css |
---|
|
Den här väljaren anger alla fältuppsättningar med klassen Radio-Group-wrapper som mål. Det är användbart om du vill använda allmänna format på hela alternativgruppen.
- Egenskaper för alternativknappar
code language-css |
---|
|
- Ange alla alternativknappsetiketter för ett specifikt fält baserat på dess namn
code language-css |
---|
|
Kryssrutegrupper
code language-html |
---|
|
Exempel på HTML-struktur
code language-html |
---|
|
-
Inriktning för ytteromslutningen: Dessa väljare är avsedda för de yttre behållarna för både alternativknappar och kryssrutegrupper, vilket gör att du kan använda allmänna format för hela gruppstrukturen. Det här är användbart när du vill ange avstånd, justering eller andra layoutrelaterade egenskaper.
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 */ }
-
Målgruppsetiketter: Den här väljaren anger elementet
.field-label
som mål i gruppomslutningar för både alternativknappar och kryssrutor. På så sätt kan du formatera etiketterna specifikt för dessa grupper, vilket kan få dem att sticka ut mer.code language-css .radio-group-wrapper legend, .checkbox-group-wrapper legend { font-weight: bold; /* Makes the group label bold */ }
-
Indata och etiketter för enskilda användare: Dessa väljare ger mer exakt kontroll över enskilda alternativknappar, kryssrutor och tillhörande etiketter. Du kan använda dessa för att justera storlek, avstånd eller använda mer distinkta visuella format.
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 */ }
-
Anpassa utseendet på alternativknappar och kryssrutor: Den här tekniken döljer standardindata och använder
:before
och:after
pseudoelement för att skapa anpassade bilder som ändrar utseende baserat på markerat läge.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 ... */ }
Panel-/behållarkomponenter
code language-html |
---|
|
Exempel på HTML-struktur
code language-html |
---|
|
- Fältuppsättningselementet fungerar som panelbehållare med klassens panelwrapper och ytterligare klasser för formatering baserat på panelnamnet (fältinloggning).
- Förklaringselementet (<legend>) fungerar som panelrubrik med texten"Inloggningsinformation" och klassens fältetikett. Attributet data-visible="false" kan användas med JavaScript för att styra visningen av titeln.
- I fältuppsättningen, multipel .{Type}-wrapper-element (.text-wrapper och .password-wrapper i det här fallet) representerar enskilda formulärfält på panelen.
- Varje wrapper innehåller en etikett, ett inmatningsfält och en beskrivning, som liknar de föregående exemplen.
- Panelen:
code language-css |
---|
|
.panel-wrapper
-väljaren formaterar alla element med klassens panelwrapper, vilket ger ett konsekvent utseende för alla paneler.
- Ange paneltiteln som mål:
code language-css |
---|
|
.panel-wrapper legend
-väljaren formaterar förklaringselementet på panelen, så att titeln sticker ut visuellt.
- Ange enskilda fält som mål på panelen:
code language-css |
---|
|
.panel-wrapper .{Type}-wrapper
-väljaren anger alla omslutningar med klassen.{Type}-wrapper
på panelen som mål, vilket gör att du kan formatera mellanrummet mellan formulärfält.
- Målspecifika fält (valfritt):
code language-css |
---|
|
- Dessa väljare gör att du kan rikta in dig på specifika fältbrytningar på panelen för unik formatering, t.ex. markera användarnamnsfältet.
Repeterbar panel
code language-html |
---|
|
Exempel på HTML-struktur
code language-html |
---|
|
Varje panel har samma struktur som exemplet med en panel, med ytterligare attribut:
-
data-repetable="true": Det här attributet anger att panelen kan upprepas dynamiskt med JavaScript eller ett ramverk.
-
Unika ID:n och namn: Varje element i panelen har ett unikt ID (till exempel name-1, email-1) och name-attribut baserat på panelens indexvärde (till exempel name="contact[0].name"). Detta gör att data kan samlas in korrekt när flera paneler skickas.
- Alla upprepningsbara paneler som mål:
code language-css |
---|
|
Väljaren formaterar alla paneler som kan upprepas, vilket ger ett konsekvent utseende och känsla.
- Ange enskilda fält som mål på en panel:
code language-css |
---|
|
Den här väljaren formaterar alla fältomslutningar på en repeterbar panel, vilket ger ett konsekvent avstånd mellan fälten.
- Ange specifika fält som mål (inom en panel):
code language-css |
---|
|
Bifogad fil
code language-html |
---|
|
Exempel på HTML-struktur
code language-html |
---|
|
- Klassattributet använder det angivna namnet för den bifogade filen (claim_form).
- Attributen id och name för indataelementet matchar namnet på den bifogade filen (claim_form).
- Avsnittet med fillistan är inledningsvis tomt. Den fylls i dynamiskt med JavaScript när filer överförs.
- Målkomponenten för hela den bifogade filen:
code language-css |
---|
|
Den här väljaren formaterar hela den bifogade filkomponenten, inklusive teckenförklaringen, dragningsområdet, inmatningsfältet och listan.
- Målinriktade specifika element:
code language-css |
---|
|
Dessa väljare gör att du kan formatera olika delar av den bifogade filkomponenten individuellt. Du kan justera formaten så att de matchar dina designinställningar.
Formatkomponenter
Du kan formatera formulärfält baserat på deras specifika typ ({Type}-wrapper
) eller enskilda namn (field-{Name}
). På så sätt får du bättre kontroll över och anpassning av formulärets utseende.
Formatering baserad på fälttyp
Du kan använda CSS-väljare för att ange specifika fälttyper och använda format på ett konsekvent sätt.
code language-html |
---|
|
Exempel på HTML-struktur
code language-html |
---|
|
-
Varje fält kapslas i ett
div
-element med flera klasser:{Type}-wrapper
: Identifierar fälttypen. Exempel:form-text-wrapper
,form-number-wrapper
,form-email-wrapper
.field-{Name}
: Identifierar fältet med dess namn. Till exempelform-name
,form-age
,form-email
.field-wrapper
: En generisk klass för alla fältbrytare.
-
Attributet
data-required
anger om fältet är obligatoriskt eller valfritt. -
Varje fält har en motsvarande etikett, indataelement och eventuella ytterligare element som platshållare och beskrivningar.
code language-css |
---|
|
Formatering baserad på fältnamn
Du kan också ange enskilda fält som mål efter namn för att använda unika format.
code language-html |
---|
|
Exempel på HTML-struktur
code language-html |
---|
|
code language-css |
---|
|
Den här CSS-koden har alla indataelement som finns i ett element som har klassen field-otp
som mål. Formulärets HTML-struktur följer konventionerna i det adaptiva Forms-blocket, vilket innebär att det finns en behållare som är markerad med klassen"field-out" som innehåller fältet med namnet"otp".
Se även
- Kom igång med Edge Delivery Services för AEM Forms
- Skapa ett formulär med Google eller Microsoft Excel
- Konfigurera dina Google-blad eller Microsoft Excel-filer så att du kan börja ta emot
- Publish formulär och börja samla in data
- Anpassa utseendet på
- Lägga till repeterbara avsnitt i ett
- Visa ett anpassat tackmeddelande efter att formuläret har skickats
- Komponenter för adaptiva formulärblock och deras egenskaper