I denne opplæringen lærer vi hvordan du kan dra nytte av flexbox for å lage et responsivt skjema. Det som er interessant (og spennende samtidig) er at flexbox lar oss bygge vårt skjema uten å bruke noen medieforespørsler.
Før vi begynner, la oss se på hva vi skal jobbe for (se ut den større versjonen for å se hvordan skjemaoppsettet endres):
Akkurat da, første ting først, la oss grave inn i formens struktur. Vi merker det opp som følger:
.flex-ytre
uordnet liste for å gruppere de ulike formelementene.flex-indre
uordnet liste for å gruppere avmerkingsboksene. Det er det! Ved å definere bare to uordnede lister (vi kunne også ha brukt bestilte lister), har vi bygget en veldig ren form. Slik ser det ut:
Merk: Vi bruker p
element i stedet for merkelapp
element før .flex-indre
liste. Dette skyldes at det i dette spesielle tilfellet ikke gir mening å bruke merkelapp
stikkord. Denne taggen bør bare brukes til å knytte en tekstetikett med skjemakontroll.
Her er merket for avmerkingsboksene:
Med markeringen klar, ser den uformede formen ut slik:
Dette vil ikke være den fanciest form du noensinne har sett, men det fungerer! Det er semantisk, tilgjengelig og flytende; aspekter som er uten tvil viktigere enn noe annet.
På dette tidspunktet er vi klare til å begynne å bruke noen stilarter til den.
La oss begynne med å legge til normal og autoprefixer til våre penninnstillinger:
Neste vil vi identifisere flexbeholdere. I vårt tilfelle, følgende elementer:
.flex-ytre
liste. .flex-indre
liste som inneholder alle avmerkingsboksene.I tillegg ønsker vi å sentrere fleksibeltene på tverrgående akse vertikalt.
For å oppnå denne oppførselen, oppretter vi noen innledende CSS-regler:
.flex-ytre li, .flex-indre display: flex; flex-wrap: wrap; justeringselementer: center;
Det neste trinnet er å spesifisere breddene for flex-elementene. Vi begynner med flex elementer av .flex-ytre
liste.
De viktigste kravene:
Hva gir dette oss? Hver etikett sammen med det tilhørende formelementet vil bli vist på en enkelt horisontal rad når bredden på skjemaet utgjør minst 340px. I alle andre tilfeller vil alle formelementer (bortsett fra boksene som vi ser på et øyeblikk) stables vertikalt.
Merk: De nevnte verdiene er vilkårlig - du kan endre dem etter dine behov.
.flex-ytre> li> etikett, .flex-ytre li p flex: 1 0 120px; maksimal bredde: 220px; .flex-ytre> li> label + *, .flex-inner flex: 1 0 220px;
Til slutt, for submit-knappen, som også er et fleksibelt element, definerer vi noen grunnleggende stiler:
.flex-ytre li-knapp margin-left: auto; polstring: 8px 16px; grense: ingen; bakgrunn: # 333; farge: # f2f2f2; tekst-transformer: store bokstaver; brevavstand: .09em; border-radius: 2px;
La oss nå utforme avmerkingsboksene. Husk at deres flex wrapper har en minimumsbredde på 220px.
Først setter vi bredden på flex-elementene som er umiddelbare foreldre i avmerkingsboksene til 100px:
.flex-inner li bredde: 100px;
Da tar vi fordel av rettferdig-innhold
egenskap for å justere dem over hovedaksen. Vær oppmerksom på at denne egenskapen har forskjellige verdier, men for dette eksempelet er vi bare interessert i plass mellom-
verdi:
.flex-inner justify-content: mellomrom mellom;
Denne verdien fungerer bra og lar oss oppnå en konsistent justering for avmerkingsboksene og deres respektive etiketter. En ting vi bør nevne er at denne eiendomsverdien kan distribuere elementene i den endelige raden uklart. På visse visningsbredder ser du noe slikt:
Legg merke til justeringen av de to siste flex-elementene. Hvis du av en eller annen grunn ikke liker det, og du foretrekker at de vises ved siden av hverandre, kan du prøve noe slikt:
rettferdig-innhold
eiendom fra flex wrapper.bredde: 50%
).bredde: 25%
i stedet for bredde: 50%
.Mest av alt er det viktig å forstå to ting:
flex: 1 100px
. Før vi går, la oss legge til litt mer estetikk for å gjøre ting mer presentable. Velg mellomrom CSS-fanen i demonstrasjonen nedenfor for å se hvor farger og mellomrom har blitt lagt til:
Som du kan se, med minimal oppmåling og kraften til flexbox, klarte vi å bygge en responsiv form. Forhåpentligvis nå har du fått litt nyttig kunnskap som vil hjelpe deg med å bygge dine egne flexbox-skjemaer.
Hvis du vil ta dette skjemaet et skritt videre, har jeg to utfordringer for deg: