Costruisci una pagina Web con CSS3 Flexbox

Ieri abbiamo discusso del futuro del layout CSS e di alcuni dei nuovi moduli che CSS3 porta in tavola in questa arena. Uno di questi che abbiamo brevemente toccato era CSS3 Flexbox.

Oggi approfondiremo questo modello e costruiremo una pagina web completa. Non sarà affatto pronto per implementare i tuoi progetti, ma ti fornirà ulteriori informazioni su un possibile modo in cui codificheremo i siti web negli anni a venire. Inoltre, questa roba è semplicemente divertente da giocare!

Altamente sperimentale: solo Webkit

Il mio obiettivo per questo post era di avere una pagina funzionante attiva e funzionante su diversi browser, ma non è successo. A questo punto l'implementazione è buggata e incoerente tra i browser, anche dopo aver installato Flexie.js, stavo ancora ottenendo risultati molto diversi tra Firefox e Safari (penso che abbia a che fare con il mixaggio di contenitori tipici centrati sul margine e Flexbox).

Per questo motivo, il progetto di oggi sarà rivolto principalmente a Safari e Chrome perché francamente, è ancora un casino in altri browser! Sicuramente ti incoraggio a seguire e poi a giocare con il prodotto finito per vedere se riesci a farlo funzionare in un'implementazione cross-browser. Se hai suggerimenti, mi piacerebbe sentirli nei commenti!

Passaggio 1: Classi riutilizzabili

Da quando ho brevemente spiegato il concetto base di Flexbox nel post di ieri, mi concentrerò sull'implementazione qui. Ma non preoccuparti, dovresti ottenere il succo mentre procediamo.

La prima cosa che vogliamo fare è creare alcune classi base che aiuteranno a definire il nostro layout. Questi attributi possono essere applicati a un ID in base alle necessità, ma trovo utile e ordinato farlo in questo modo.

Parliamo di come funzionano queste classi. La prima classe, hasflex, verrà applicato a un contenitore padre di cui vogliamo creare i figli utilizzando questo nuovo sistema Flexbox. Una cosa che noterete è che questo intero design sarà completamente privo di fluttuazioni, così da darvi alcune indicazioni su dove implementeremo Flexbox nel nostro codice.

Successivamente, impostiamo alcune altre classi per applicarle varie box-flex valori. Flexbox distribuirà comodamente i nostri elementi figlio attraverso il contenitore e questi definiranno le proporzioni. io credere che il valore predefinito è? 0? ma i risultati sono sembrati un po 'buggy con questa ipotesi, quindi ho trovato utile applicare sempre un valore manualmente.

Passaggio 2: HTML iniziale e CSS

Per iniziare il tuo documento HTML, crea un contenitore e un'intestazione. A questo punto, questi sono elementi base che costruiremo come sempre senza l'aiuto di Flexbox.

Una volta che hai ottenuto questo, inserisci gli stili di base qui sotto. Fondamentalmente ho creato un corpo scuro con un contenitore leggero da 1.000 px che conserverà tutto il nostro contenuto. Toss in alcuni margini al centro e alcuni stili di testo di base e siamo pronti per passare alle cose divertenti.

Nota: Il carattere principale che userò è Oswald, di Google Fonts.

Passaggio 3: navigazione

Ora, per l'area di navigazione, si crea in genere un elenco di collegamenti e quindi li si sposta a sinistra. Con Flexbox, il processo è leggermente diverso. Qui applichiamo semplicemente il hasflex classe che abbiamo creato in precedenza e quindi utilizzare box0 per ciascuna delle voci dell'elenco. applicando box0 a tutti e tre ha l'effetto di far fluttuare i collegamenti a sinistra ma non li distribuirà lungo tutta la larghezza del contenitore.

Dopo questo, applichiamo semplicemente gli stessi tipi di stili che utilizzeremmo su qualsiasi altra pagina web. L'obiettivo principale qui è quello di distanziare leggermente i collegamenti con alcuni margini e assicurarsi che i nostri collegamenti siano disegnati correttamente.

Passaggio 4: l'immagine

Ogni buona pagina web ha bisogno di un'immagine. Per illustrare ulteriormente come applicare Flexbox in modo selettivo solo a quegli elementi che ne hanno bisogno, inseriremo un'immagine di intestazione di grandi dimensioni usando lo stesso codice esatto che fareste normalmente.

Combina questo con alcuni CSS di base e hai un semplice e veloce layout a tre colonne! Poiché Flexbox si occupa automaticamente della distribuzione relativa alla larghezza genitore, qualsiasi modifica apportata al genitore si rifletterà automaticamente nei bambini.

Una cosa affascinante di Flexbox è che possiamo effettivamente riordinare le colonne che abbiamo configurato usando puro CSS. Assegnazione -webkit-box-ordinal-group: (un numero); per ogni elemento ti dà il controllo sull'ordine del loro aspetto.

Passaggio 6: pila verticale

È importante sapere che non è necessario utilizzare colonne verticali quando si lavora con Flexbox. Possiamo usare la stessa tecnica di cui sopra per impilare alcuni paragrafi uno sopra l'altro. Se entri davvero in Flexbox, questa tecnica può essere utilizzata per combinare elementi verticali e orizzontali in pila, ma la terremo qui di base solo per vedere come funziona.

La differenza principale qui è che abbiamo impostato box-orient a verticale, che ci dà la pila verticale mostrata nell'immagine sopra invece delle colonne che abbiamo creato nel passaggio precedente.

Passaggio 7: due colonne

Solo per cambiare le cose un'ultima volta, creiamo un'altra sezione, questa volta con due colonne anziché tre. Il principio è esattamente lo stesso. Non devi ripensare il layout perché hai due colonne questa volta, Flexbox si occupa di tutto il sollevamento pesante ancora una volta.

Prodotto finito

Guarda una demo dal vivo se sei in Safari o Chrome.

Andare avanti

Ho cercato intenzionalmente di mantenere questo esempio il più semplice possibile. Tuttavia, puoi facilmente prendere questo layout e renderlo ancora più complesso. Per i principianti, usare le percentuali per la larghezza ti darà un layout piacevole e veramente flessibile. Inoltre, come ho detto sopra, è possibile eseguire azioni complesse come la riorganizzazione delle colonne e la miscelazione di pile verticali e orizzontali nella stessa riga. Vi incoraggio a giocare il più possibile con il codice usando questa pagina come guida.

Conclusione

Questo esempio di base intende chiarire ulteriormente come utilizzare Flexbox per creare layout semplici e complessi in futuro. Sono abbastanza nuovo per il modulo, quindi questo è lontano da perfetto, come dimostra il fatto che non è ancora compatibile cross-browser!

Nonostante le sue carenze, dovresti avere una conoscenza approfondita di come funziona il modulo e cosa si può fare con una quantità relativamente piccola di codice quando si fa leva su Flexbox. Sentiti libero di dare un sacco di suggerimenti nei commenti!