Igår diskuterade vi framtiden för CSS-layout och några av de nya modulerna som CSS3 tar med på bordet i den här arenan. En av dessa som vi kortfattat berörde var CSS3 Flexbox.
Idag kommer vi att gräva djupare in i den här modellen och bygga en fullständig webbsida med den. Det kommer inte att vara redo att genomföra på dina projekt men det ger dig ytterligare inblick i en möjlig väg att vi kommer att koda webbplatser under de närmaste åren. Dessutom är det här bara trevligt att leka med!
Högt Experimentell: Endast Webkit
Mitt mål för detta inlägg var att få en arbetssida igång på flera webbläsare, det hände inte. Vid denna tidpunkt är implementeringen buggy och inkonsekvent över webbläsare, även efter att du installerat Flexie.js, fick jag fortfarande oerhört olika resultat mellan Firefox och Safari (jag tror att det har att göra med att blanda typiska margencentrerade behållare och Flexbox).
Av detta skäl kommer dagens projekt främst att riktas till Safari och Chrome tyvärr är det fortfarande en röra i andra webbläsare! Jag uppmuntrar dig definitivt att följa med och sedan spela med den färdiga produkten för att se om du kan få igång det i en webbläsarimplementering. Om du har förslag, skulle jag gärna höra dem i kommentarerna!
Steg 1: Återanvändbara klasser
Sedan jag kortfattat förklarade det grundläggande begreppet Flexbox i gårdagens inlägg, fokuserar jag på implementering här. Men oroa dig inte, du borde få kärnan när vi går vidare.
Det första vi vill göra är att skapa några grundläggande klasser som hjälper till att definiera vår layout. Dessa attribut kan appliceras på ett ID på erforderligt sätt, men jag tycker att det är praktiskt att och städa att göra det på så sätt.
Låt oss diskutera hur dessa klasser fungerar. Den första klassen, hasflex, kommer att tillämpas på en förälderbehållare vars barn vi vill lägga ut med hjälp av det här nya Flexbox-systemet. En sak som du kommer att märka är att hela denna design kommer att vara helt utan floats så att du får några bra indikationer på var vi ska implementera Flexbox i vår kod.
Därefter inrättade vi några fler klasser för att tillämpa olika box-flex värden. Flexbox ska enkelt fördela våra barnelement över behållaren och dessa kommer att definiera proportionerna. jag tro att standardvärdet är? 0? men resultaten verkade lite buggy med detta antagande så jag tyckte det var bra att alltid bara ange ett värde manuellt.
Steg 2: Initial HTML & CSS
För att starta ditt HTML-dokument, skapa en behållare och en rubrik. Vid det här laget är dessa grundläggande element som vi kommer att bygga precis som alltid utan hjälp av Flexbox.
När du har fått det på plats, släng in de grundläggande stilarna nedan. I grund och botten ställer jag upp en mörk kropp med en ljus 1000 px bred behållare som håller hela vårt innehåll. Kasta i några marginaler till centrum och några grundläggande textstilar och vi är redo att gå vidare till de roliga grejerna.
Notera: Skriftrubriken jag ska använda är Oswald, från Google Fonts.
Steg 3: Navigering
Nu för navigationsområdet skapar du vanligtvis en lista med länkar och flyter dem sedan till vänster. Med Flexbox är processen lite annorlunda. Här tillämpar vi helt enkelt hasflex klass som vi skapade tidigare och sedan använda box0 för var och en av listobjekten. tillämpa box0 till alla tre har effekten att flytta länkarna till vänster men kommer inte att distribuera dem hela vägen över behållarens bredd.
Därefter tillämpar vi helt enkelt samma typer av stilar som vi skulle på någon annan webbsida. Huvudmålet här är att placera länkarna lite ut med vissa marginaler och för att se till att våra länkar är ordentligt stylade.
Steg 4: Bilden
Varje bra webbsida behöver en bild. För att ytterligare illustrera hur du selektivt tillämpar Flexbox bara på de element som behöver det, slänger vi in en stor headerbild med samma exakta kod som du vanligtvis skulle.