I denna handledning kommer vi att undersöka hur man bygger ett par olika webbformulär med hjälp av CSS Grid. För varje exempel använder vi först floats och ser sedan hur samma layout kunde göras med hjälp av CSS Grid.
Om du inte har någon tidigare kunskap om CSS-nätet, ta en titt på vår nybörjarserie. Förstå CSS Grid Layout Module. Låt oss börja!
I denna layout ska vi dela upp formuläret i två kolumner så att vi kan visa etiketterna till vänster och inmatningsfälten till höger.
En traditionell inställning till denna layout kan använda flottörer för att ge oss våra kolumner. Observera att vi inte har en omslag för formelementet; Vi ska direkt ställa in etiketter och ingångar.
form overflow: hidden; etikett float: left; bredd: 200px; padding-right: 24px; inmatning float: left; bredd: calc (100% - 200px); knappen float: right; bredd: calc (100% - 200px);
Du märker att vi använder calc ()
här, vilket gör att vi kan göra vår vänstra kolumn fixerad vid 200px bred, medan den högra kolumnen förblir flytande.
Här är resultatet, med några ytterligare stilar för estetik:
Vårt mål när du använder "Grid" är att definiera två kolumner, och placera sedan varje element i den önskade kolumnen.
Det första steget är att definiera vårt nät på moderelementet form
:
formulär display: rutnät;
Då måste vi dela det nätet med grid-template-kolonner
:
formulär display: rutnät; rutnätmall-kolumner: 200px 1fr;
Baserat på ovanstående CSS kommer den första kolumnen att ha en fast bredd på 200px
medan den andra kommer att ta 1fr
("En fraktion") av det återstående lediga utrymmet.
Vi behöver nu definiera placeringen för våra etiketter och inmatningar. För att göra det ska vi använda grid-kolonn
med specifika värden för nätlinjerna:
För mer om hur rutnätverk fungerar, ta en titt på detta snabba tips:
Baserat på dessa rader kommer vi att tillämpa följande regler för våra etiketter, ingångar och knappen:
etikett rutnät-kolumn: 1/2; inmatning, knapp rutnät-kolumn: 2/3;
Märken kommer att finnas i kolumnen som börjar på rad 1 och slutar på rad 2. Ingångarna och knappen kommer att placeras i kolumnen som börjar på rad 2 och slutar på rad 3.
Slutligen använder vi grid-gap
att lägga till en rännan på 16px mellan raderna och kolumnerna:
formulär display: rutnät; rutnätmall-kolumner: 200px 1fr; gallergap: 16px;
I denna layout vill vi uppnå följande:
Det är helt möjligt att bygga denna layout med hjälp av flottor. Vi måste dock ställa in en min-höjd
för den vänstra kolumnen, annars antar den inte hela höjden. Det finns andra "traditionella" förhållningssätt till denna fråga, men ingen är särskilt söta.
Sammanfattningsvis måste vi med floats:
min-höjd
till vänster kolumn.överflöde: gömd;
för att bevara omslagshöjden.textarea
och skicka knappen, och gör dem sedan fyllda med full bredd.Det är ganska jobbigt, rätt?
Ett bättre tillvägagångssätt skulle vara att lösa detta med antingen Flexbox eller Grid. I det här fallet föredrar jag att använda Grid eftersom vi ordnar element både horisontellt och vertikalt.
Låt oss börja med att förklara ett galler på vår omslag och dela den i två kolumner.
.wrapper display: rutnät; rutmall-kolumner: 1fr 2fr;
Vårt formelement också måste förklaras som ett nät:
formulär display: rutnät; rutmall-kolumner: 1fr 1fr; gallergap: 20px;
Efter att ha tillämpat ovanstående regler kommer vi att få följande:
Vi måste släppa de två sista elementen för att fylla hela bredden genom att sträcka dem från raden 1 till raden 3.
.fullbredd grid-column: 1/3;
Tid för vår sista formlayout. I det här exemplet har vi inkluderat en inmatning för användare att ladda upp sitt profilfoto. Den ska placeras längst upp till höger.
Vi bygger detta med följande markering:
Kortfattat som ett traditionellt tillvägagångssätt kan vi uppnå vår layout med följande steg:
position: relativ;
till formelementet.Låt oss inte dölja den traditionella inställningen för mycket. Med Grid delas vi i formuläret i två kolumner enligt följande:
Den första kolumnen tar dubbelt det horisontella utrymmet i den andra kolumnen, som vi kommer att uppnå med fr
enheter:
formulär display: rutnät; rutmall-kolumner: 2fr 1fr; gallergap: 20px;
Efter att ha etablerat rutnätet måste vi placera formelementen mellan raden 1 och raden 2:
formulär p grid-kolumn: 1/2;
Nästa steg är att placera inmatningsfilen i den andra kolumnen. För att göra det ska vi placera det mellan raderlinje 2 och raderlinje 3. Rörande vertikalt gör vi att det spänner rader från raden 1 till raden 2.
.input-file-wrapper grid-column: 2/3; rutnät: 1/2;
Bra gjort! Vi har täckt flera olika exempel för att använda CSS Grid när du bygger webbformulär. Som du har märkt sparar vi mycket tid och ansträngning genom att skriva några rader kod, i motsats till att använda traditionella layouttekniker. Du kan använda alla ovanstående exempel från och med idag, tack vare CSS @supports
vilket hjälper oss att använda en specifik funktion som en förbättring.
Har du några förslag på att förbättra dessa layouter? Låt mig veta i kommentarerna nedan!