Nu este necesar să înțelegi fiecare aspect al Flexbox înainte de a putea să sară și să începeți. În acest tutorial, vom introduce câteva caracteristici ale Flexbox în timp ce proiectăm un "layout de știri" cum ar fi cel pe care îl puteți găsi pe The Guardian.
Motivul pentru care folosim Flexbox este că oferă funcții foarte puternice:
Deci sa începem!
Crearea coloanelor în CSS a fost întotdeauna o provocare. Pentru o lungă perioadă de timp, singurele opțiuni erau să utilizeze flotoare sau mese, dar ambele aveau propriile probleme.
Flexbox facilitează procesul, oferindu-ne:
afișare: flex
Să începem prin a face două coloane; una care este de 2/3 din lățimea containerului nostru și una care este de 1/3.
Coloana 2/31/3 coloană
Există două elemente aici:
coloane
recipientcoloană
copiii, unul cu o clasă suplimentară de principal coloană
pe care o vom folosi pentru ao face mai largă.coloane display: flex; coloană flex: 1; .mai-coloană flex: 2;
Cum coloana principală are o valoare flexibilă de 2
, aceasta va dura de două ori mai mult spațiu ca și cealaltă coloană.
Prin adăugarea unor stiluri vizuale suplimentare, iată ce obținem:
Fiecare dintre aceste două coloane va conține mai multe articole stivuite vertical, așa că vom schimba coloană
elemente în recipiente Flexbox. Noi vrem:
.coloana display: flex; direcție flexibilă: coloană; / * Face articole stivuite vertical * / .article flex: 1; / * Întinde articolele pentru a umple spațiul rămas * /
direcția flex: coloană
regula cu privire la recipient, combinate cu flex: 1
regula cu privire la copii se asigură că articolele vor umple întregul spațiu vertical, menținând primele două coloane la aceeași înălțime.
Acum, pentru a ne da mai mult control, să transformăm fiecare articol într-un container Flexbox. Fiecare dintre ele va conține:
Folosim Flexbox aici pentru a "împinge" bara de informații în partea de jos. Vă reamintim că acesta este aspectul pentru care vrem să urmărim:
Iată codul:
.articol display: flex; direcție flexibilă: coloană; flex-bază: auto; / * stabilește mărimea elementului inițial pe baza conținutului său * /. body-body display: flex; flex: 1; direcție flexibilă: coloană; .article-content flex: 1; / * Acest lucru va face ca conținutul să umple spațiul rămas și, astfel, să împingă bara de informații în partea de jos * /
Elementele articolului sunt prezentate pe verticală datorită direcție flexibilă: coloană;
regulă.
Aplicăm flex: 1
la Articolul conținut
astfel încât să umple spațiul gol și "împinge" articol-info
spre partea de jos, indiferent de înălțimea coloanelor.
În coloana din stânga, ceea ce dorim de fapt este un alt set de coloane. Așa că vom înlocui al doilea articol cu același lucru coloane
container pe care l-am folosit deja.
Întrucât vrem ca prima coloană imbricată să fie mai amplă, adăugăm o nested-coloană
clasa cu stilul suplimentar:
.imbrăcat-coloană flex: 2;
Acest lucru va face noua noastră coloană de două ori mai largă decât cealaltă.
Primul articol este foarte mare. Pentru a optimiza utilizarea spațiului, să transformăm aspectul său orizontal.
.primul articol flex-direction: row; . primul articol. articol-corp flex: 1; .primul-articol .article-image height: 300px; ordine: 2; padding-top: 0; lățime: 400px;
Ordin
proprietatea este foarte utilă aici, deoarece ne permite să modificăm ordinea elementelor HTML fără a afecta marcajul HTML. Articolul-image
vine de fapt inainte de Articolul corp
în marcaj, dar se va comporta ca și cum ar veni după.
Toate acestea privesc la fel cum ne dorim, deși este puțin ciudat. Să rezolvăm asta, răspunzând.
O caracteristică excelentă a Flexbox este că trebuie doar să eliminați afișare: flex
regula pe container pentru a dezactiva complet Flexbox, păstrând în același timp toate celelalte proprietăți Flexbox (cum ar fi aliniați-elemente
sau contracta
) valabil.
Drept rezultat, puteți declanșa un aspect "receptiv", permițând numai utilizarea Flexbox de mai sus un anumit punct de întrerupere.
Vom elimina afișare: flex
din ambele .coloane
și .coloană
selectori, în loc să le înfășurați într-o interogare media:
Ecranul @media și (min-width: 800px) coloane, coloană display: flex;
Asta e! Pe ecrane mai mici, toate articolele se vor afla una peste alta. Peste 800 de pixeli, vor fi prezentate în două coloane.
Pentru a face aspectul mai atrăgător pe ecrane mai mari, să adăugăm câteva modificări CSS:
Ecranul @media și (min-width: 1000px) . primul articol flex-direction: row; . primul articol. articol-corp flex: 1; .primul-articol .article-image height: 300px; ordine: 2; padding-top: 0; lățime: 400px; .mai-coloană flex: 3; . coloană nestedă flex: 2;
Primul articol are conținutul său stabilit orizontal, cu textul din stânga și imaginea din dreapta. De asemenea, coloana principală este acum mai mare (75%), iar coloana imbricată (66%). Iată rezultatul final!
Sper că v-am arătat că nu trebuie să înțelegeți fiecare aspect al Flexbox pentru a sari și a începe să-l utilizați! Acest aspect de știri receptiv este un model foarte util; trageți-l în afară, jucați cu el, spuneți-vă cum mergeți!