I den här handledningen lär vi dig hur du utnyttjar flexbox för att skapa en responsiv form. Det som är intressant (och spännande samtidigt) är att flexbox tillåter oss att bygga vår form utan att använda några mediafrågor.
Innan vi börjar, låt oss titta på vad vi ska arbeta för (kolla in den större versionen för att se hur formulärlayouten ändras):
Just då först sätter vi först in i formens struktur. Vi markerar det enligt följande:
.flex-yttre
oorderad lista för att gruppera de olika formelementen.flex-inre
oorderad lista för att gruppera kryssrutorna. Det är allt! Genom att definiera bara två oorderade listor (vi kunde ha använt beställda listor också), har vi byggt en mycket ren form. Så här ser det ut:
Notera: vi använder p
element i stället för märka
element före .flex-inre
lista. Detta beror på att det i det här fallet inte gör någon mening att använda märka
märka. Den här taggen ska endast användas för att associera en textetikett med en formkontroll.
Här är markeringen för kryssrutorna:
När markeringen är klar ser den ostylade formen ut så här:
Det här är inte den fanciest form du någonsin sett, men det fungerar! Det är semantiskt, tillgängligt och flytande; aspekter som är förmodligen viktigare än någonting.
Vid denna tidpunkt är vi redo att börja använda några stilar till den.
Låt oss börja med att lägga till normalisera och autoprefixer till våra penninställningar:
Nästa kommer vi att identifiera flexbehållarna. I vårt fall följande element:
.flex-yttre
lista. .flex-inre
lista som innehåller alla kryssrutor.Dessutom vill vi vertikalt centrera flexposter över tväraxeln.
För att uppnå detta beteende ställer vi upp några inledande CSS-regler:
.flex-yttre li, .flex-inner display: flex; flex-wrap: wrap; align-items: center;
Nästa steg är att ange bredden för flex-objekten. Vi börjar med flexens föremål .flex-yttre
lista.
De viktigaste kraven:
Vad ger detta oss? Varje etikett tillsammans med dess associerade formelement kommer att visas på en enda horisontell rad när formens bredd uppgår till minst 340px. I alla andra fall kommer alla formelement (bortsett från kryssrutorna som vi ser på ett ögonblick) att staplas vertikalt.
Notera: ovannämnda värden är godtyckliga - du kan ändra dem enligt dina behov.
.flex-yttre> li> etikett, .flex-yttre li p flex: 1 0 120px; max bredd: 220px; .flex-yttre> li> etikett + *, .flex-inre flex: 1 0 220px;
Slutligen, för inlämningsknappen, som också är ett flex-objekt, definierar vi några grundläggande stilar:
.flex-outer li-knappen margin-left: auto; vaddering: 8px 16px; gränsen: ingen; bakgrund: # 333; färg: # f2f2f2; text-transform: stor bokstav; brevavstånd: .09em; gränslinje: 2px;
Låt oss nu stryka kryssrutorna. Kom ihåg att deras flex wrapper har en minsta bredd på 220px.
Först ställer vi bredden på flex-objekten som är omedelbara föräldrar till kryssrutorna till 100px:
.flex-inner li bredd: 100px;
Då tar vi nytta av motivera-innehåll
egenskap för att anpassa dem över huvudaxeln. Observera att den här egenskapen har olika värden, men för det här exemplet är vi bara intresserade av rymd-mellan
värde:
.flex-inner justify-content: space-between;
Detta värde fungerar bra och gör det möjligt för oss att uppnå en konsekvent anpassning för kryssrutorna och deras respektive etiketter. En sak vi bör nämna är att det här egenskapsvärdet kan distribuera elementet i sista raden oklart. Vid vissa visningsbredder ser du något så här:
Lägg märke till justeringen av de två senaste flex-objekten. Om du av någon anledning inte gillar den här layouten och du föredrar att de ska visas bredvid varandra kan du prova något så här:
motivera-innehåll
egendom från flex wrapper.bredd: 50%
).bredd: 25%
istället för bredd: 50%
.Mest av allt är det viktigt att förstå två saker:
flex: 1 100px
. Innan vi lämnar, låt oss lägga till lite mer estetik för att göra saker mer presenterbara. Plocka in CSS-fliken i demo nedan för att se var färger och mellanslag har lagts till:
Som du kan se, med minimal markup och flexboxens förmåga lyckades vi bygga en responsiv form. Förhoppningsvis nu har du fått lite användbar kunskap som hjälper dig att bygga dina egna flexboxformar.
Om du vill ta detta formulär ett steg längre har jag två utmaningar för dig: