Grila CSS este ideală pentru aspectul receptiv. Introducere în CSS Grid Layout. Introducere în CSS Grid
Am scris odată despre un serviciu neobișnuit, care este un AI pentru crearea unui site web. Judecând după rezultatele actuale, s-au dovedit „așa așa”, mai ales având în vedere prețul declarat. în acest sens vor fi mai eficiente.
Astăzi vreau să vorbesc despre o „tehnologie” care este similară ca nume, dar complet diferită în esență - Grilă CSS! Postul este format din mai multe părți:
Această abordare a construirii machetelor facilitează crearea de grile de site-uri web destul de flexibile folosind CSS. În viitor, probabil va fi folosit peste tot. Dacă am înțeles bine, este perfect pentru aceleași sarcini ca Flexbox, dar spre deosebire de acesta, poate funcționa simultan în dimensiuni bidimensionale (coloane și rânduri). Mai jos ofer o traducere a articolului, care este un fel de introducere in subiect si contine exemple educative simple. Atenţie! Autorul notei desfășoară un curs gratuit(!) pe CSS Grid în decembrie, dacă doriți, trimiteți o solicitare pe e-mailul său.
Am găsit și un videoclip util pe această temă pe internet. Poate că este mai ușor pentru cineva să perceapă informații ca aceasta:
Introducere în CSS Grid
Anul acesta, această tehnologie a primit suport încorporat în Chrome, FF, Safari, așa că este probabil să devină un instrument popular în viitorul apropiat. Dar pentru moment, trebuie să vă amintiți să aveți grijă de browserele web învechite și întârziate.
Cea mai simplă plasă
Există 2 obiecte principale aici:
- parent / wrapper (înfășurarea tuturor blocurilor interne care îl alcătuiesc);
- copii/articole (elementele în sine).
Iată cel mai simplu design:
Wrapper (afișare: grilă; )
Cu toate acestea, imediat după aceasta, nu se va schimba mare lucru, deoarece formatul de afișare nu este definit. Veți vedea 6 DIV-uri urmându-se.
Coloane și rânduri
Pentru a vă face grila bidimensională, trebuie să specificați parametrii rândurilor și coloanelor - utilizați opțiunile grilă-şablon-rândȘi grilă-șablon-coloană respectiv:
.wrapper ( afișare : grilă; grid-template-columns : 100px 100px 100px ; grid-template-rows : 50px 50px ; ) |
Wrapper (afișare: grilă; grid-template-columns: 100px 100px 100px; grid-template-rows: 50px 50px; )
Deoarece există trei valori pentru coloane, se va genera același număr dintre ele, prin urmare, există doar 2 rânduri.Numerele în pixeli stabilesc lățimea elementelor în primul caz (100px fiecare) și înălțimea (50px) în al doilea.
Iată un alt exemplu pentru a vă ajuta să înțelegeți mai bine cum funcționează:
.wrapper ( afișare : grilă; grid-template-columns : 200px 50px 100px ; grid-template-rows : 100px 30px ; ) |
Wrapper ( afișare: grilă; grid-template-coloane: 200px 50px 100px; grid-template-rows: 100px 30px; )
Va fi afișată următoarea imagine:
Locație și dimensiuni
Cu această caracteristică veți obține capabilități foarte puternice pentru a crea grile de site. Să presupunem că avem o dimensiune de 3x3:
.wrapper ( afișare: grilă; grid-template-columns: 100px 100px 100px; grid-template-rows: 100px 100px 100px ; ) |
Wrapper (afișare: grilă; grid-template-columns: 100px 100px 100px; grid-template-rows: 100px 100px 100px; )
Dacă codul HTML, ca în exemplul nostru, are 6 elemente DIV (vezi chiar la început), atunci în în acest caz, Pe site vor fi afișate doar 2 rânduri, al treilea nu va fi temporar completat. Cu toate acestea, când începem să folosim parametri diferiți pentru poziții și dimensiuni de bloc - grilă-coloană grilă-rând, situația se va schimba.
Atribuim stiluri unuia dintre obiecte:
.item1 (grid-coloană-start: 1; grid-coloană-sfârșit: 4; ) |
Item1 ( grid-coloană-start: 1; grid-coloană-sfârșit: 4; )
Aceasta înseamnă că DIV cu clasa item1 începe de la prima linie a coloanei din grilă și se termină pe a 4-a, adică umple întregul rând.
De fapt, acum unele obiecte s-au mutat în ultima linie, pe care le notăm dinainte (3x3). Există o opțiune mai simplă:
.item1 ( coloană-grilă : 1 / 4 ; ) |
Item1 (grilă-coloană: 1 / 4; )
.item1 ( grid-coloană-start : 1 ; grid-coloană-sfârșit: 3 ; ) .item3 ( grid-row-start : 2 ; grid-row-end : 4 ; ) .item4 ( grid-coloană-start : 2 ; grilă-coloană-sfârșit : 4 ; ) |
Item1 ( grid-coloană-start: 1; grid-column-end: 3; ) .item3 ( grid-row-start: 2; grid-row-end: 4; ) .item4 ( grid-coloană-start: 2; grid-coloană-sfârșit: 4; )
Ne oferă următoarea imagine:
Ai reușit să-ți dai seama? În principiu, nu este dificil, dar trebuie să înțelegeți că aceasta este doar partea de bază a nuanțelor CSS Grid.
Prototiparea și amenajarea zonelor cu grilă CSS
Codul de marcare este după cum urmează (HTML):
Container ( afișare: grilă; grid-template-columns: repeat(12, 1fr); grid-template-rows: 50px 350px 50px; grid-gap: 5px; )
Dacă totul este clar în principiu cu privire la rânduri, atunci coloanele trebuie clarificate. Aici în sensul grilă-șablon-coloane se creează o grilă care constă din 12 coloane identice (lățimea fiecăreia = 1/12 din total) + margini de 5px între ele (grid-gap).
Adăugați zone de șablon de grilă
Opțiunea oferă și mai multă flexibilitate și caracteristici uimitoare. Poate sintaxa și formatarea parametrului zone-șablon-grilă pare puțin neobișnuit, dar mai departe vei înțelege de ce totul este exact așa:
.container ( display: grid; grid-gap: 5px ; grid-template-columns : repetare (12 , 1fr) ; grid-template-rows : 50px 350px 50px ; grid-template-zone : "h h h h h h h h h h h h" "m m c f c f c f c f c f c f " ; ) |
Container ( display: grid; grid-gap: 5px; grid-template-colons: repeat(12, 1fr); grid-template-rows: 50px 350px 50px; grid-template-zone: "h h h h h h h h h h h h" "m m c c c c c f" f f f c f c f f f" ;)
Este un fel reprezentare vizuala grila site-ului dvs. în CSS. Toate personajele din acest parametru formează 3 rânduri și 12 coloane, definite de linia de mai sus. Fiecare literă corespunde unei celule. Numele din exemplu corespund blocurilor de cod HTML: antet (h), meniu (m), conținut (c) și subsol (f), dar puteți utiliza orice alte opțiuni.
Atribuirea de șabloane și experimente de zone
Pe urmatorul pas„legați logic” simboluri container și elemente DIV:
.header ( grid-area : h; ) .meniu ( grid-area : m; ) .conținut ( grid-area : c; ) .footer ( grid-area : f; ) |
Antet ( grid-area: h; ) .meniu ( grid-area: m; ) .content ( grid-area: c; ) .footer ( grid-area: f; )
Site-ul va afișa un aspect ca acesta:
Și acum începe magia. Să schimbăm câteva litere din parametru zone-șablon-grilă, de exemplu, „c” și „m” în locuri:
grid-template-zone : „h h h h h h h h h h h h” „c c c c c c c c c c m m” „f f f f f f f f f f f f” ; |
zone-șablon-grilă: „h h h h h h h h h h h h h” „c c c c c c c c c c m m” „f f f f f f f f f f f f”;
Grila va arăta diferit:
Adăugarea de adaptabilitate la acest design arată în general uimitor. Nu ai putea face asta numai cu HTML, dar în CSS totul este posibil: „. h h h h h h h h h h ”. "c c c c c c c c c m m" ". f f f f f f f f f f ." ;
grid-template-zone: ". h h h h h h h h h h ." "c c c c c c c c c m m" ". f f f f f f f f f f .";
Site-ul web arată astfel:
Fără scripturi sau HTML - doar magia CSS Grid!
Exemple suplimentare de grilă și flexibilitate
Ulterior pe CSS Tricks am găsit un alt articol pe această temă, unele opțiuni din acesta vă pot fi utile. Urmați linkurile către (logo în blocul de cod din dreapta sus) pentru a vedea exemplul în acțiune pe ecranul mare.
Aspect clasic de site
Avem un antet și un subsol întins pe toată lățimea, iar între ele există un bloc de conținut cu două bare laterale. În primul caz, când ecranul este redus, toate obiectele vor rămâne în aceleași poziții ca înainte.
Dacă aveți nevoie ca blocurile să fie amplasate unul sub celălalt, atunci:
Grilă de blog cu 2 coloane
Să spunem în centrul nostru bloc mare conținut și bara laterală. Codul de mai jos menține toate obiectele pe loc atunci când dimensiunea paginii este redusă.
A doua tehnică este să le aranjezi una după alta.
Distribuția pe lățime a elementelor
Din punct de vedere vizual, exemplul seamănă cu o galerie, când toate imaginile sunt una lângă alta în mai multe coloane. Pe măsură ce micșorați dimensiunea, pe fiecare linie vor apărea din ce în ce mai puține.
Poza din interiorul articolului
Aici conținutul este împărțit în 2 părți, iar între ele există un bloc pe ecran complet.
Total.În general, am descoperit conceptul de CSS Grid, care, sincer să fiu, m-a impresionat plăcut – mai ales cadrele în care erau luate în considerare zone de layout cu diferite litere. Desigur, toate acestea sunt doar elementele de bază ale „tehnologiei”, plus că nu am descris fiecare parametru de cod în detaliu. Exemplele din ultima secțiune a articolului sunt mai complexe și ar trebui revizuite cu atenție. Combină atât Flex, cât și Grid. Dacă acest subiect este interesant, abonați-vă la cursurile primului autor - Trimiteți prin e-mail în prima sau a doua notă originală.
Aveți ceva de adăugat în legătură cu Grila CSS? — scrieți gânduri, sfaturi sau trimiteți link-uri interesante.
Salutare tuturor! Astăzi vom vorbi despre ce sunt sistemele grid? sau pur și simplu grile flexibile în aspect adaptiv.
Mai întâi să definim ce este Sistem grilă.
Sistem grilă- o colecție de stiluri bazate pe clasă care permit utilizatorului să controleze aspectul paginii folosind un sistem de rânduri și coloane.
Să ne imaginăm că avem o pagină de blog. Este împărțit în 2 coloane: partea principală din stânga și bara laterală din dreapta. Să încercăm să creăm o grilă flexibilă pentru o astfel de pagină.
Ei bine, mai întâi trebuie să facem ceva de bază, dar... html marcajele
Aici avem un bloc care conține întreaga pagină, conține un bloc cu blog, care conține 2 blocuri: partea principală a paginii și bara laterală.
Deci întreaga noastră pagină va avea dimensiunea 960px. Întreaga grilă este împărțită în 12 coloane 69px. fiecare. Partea de blog va fi largă 900px. Partea principală a paginii va fi 566 px, bară laterală - 331px.
Asta obținem până la urmă
#pagina (
marja: 36px automat;
latime: 960px;
}
Blog (
marjă: 0 auto 53px;
latime: 900px;
}
Blog.main (
plutește la stânga;
lățime: 566px;
}
Blog .sidebar (
plutire: dreapta;
lățime: 331px;
}
Totul ar fi bine, dar, după cum puteți vedea, toate acestea sunt statice, definite în pixeli. Dorim ca grila noastră să își schimbe dimensiunea în funcție de ecranul pe care este vizualizată pagina, prin urmare, trebuie să setăm totul în la sută. Să o facem.
Pentru aceasta există aceeași formulă ca și pentru fonturi
scop / context = rezultat
Să convertim un bloc din întreaga pagină din pixeli în procente.
#pagina (
marja: 36px automat;
latime: 90%;
}
90% ales pentru că în acest caz vom avea și indentări de-a lungul marginilor de-a lungul 5% . Cu toate acestea, puteți alege o altă valoare.
Folosim formula noastră: 900 / 960 = 0.9357
Să înmulțim rezultatul cu 100 pentru a primi dobândă și o vom înregistra în contul nostru css.
Blog (
marjă: 0 auto 53px;
latime: 93,75%;
}
Același lucru trebuie făcut cu coloanele, dar observați că contextul s-a schimbat. Deoarece coloanele sunt în interiorul unui bloc cu o clasă .blog, atunci va fi contextul. Hai să facem calculul.
566 ÷ 900 = .628888889
331 ÷ 900 = .367777778
Convertim totul în procente și îl scriem în foaia de stil.
Blog.main (
plutește la stânga;
lățime: 62,8888889%;
}
Blog .sidebar (
plutire: dreapta;
lățime: 36,7777778%;
}
Asta e tot! Acum avem o grilă flexibilă și o putem folosi pentru aspect.
După cum puteți vedea, totul este foarte simplu. Baza unei grile flexibile, ca un font flexibil, este aceeași formulă, amintindu-ne care, puteți crea cu ușurință site-uri web receptive.
Nota! După cum puteți vedea, am ajuns cu valori procentuale destul de lungi. Unii vă pot sfătui să le rotunjiți, dar nu ar trebui să faceți niciodată asta! Tine minte!
Și asta e tot pentru mine, mulțumesc pentru atenție și succes aspect adaptiv!
În acest articol veți găsi curs complet prin grile CSS. Ne vom uita la ce este, care sunt diferențele cu FlexBox și cum puteți lucra cu CSS Grid.
Grilele CSS sunt noua abordare la crearea de site-uri web adaptabile cu multe blocuri situate oriunde pe site. in afara de asta Grilă CSS Există și o tehnologie care seamănă foarte mult cu ochiurile. Nu vom intra în cele mai mici diferențe dintre ele, deoarece acest lucru ar necesita un articol separat, dar vom descrie pe scurt principalele diferențe.
Grilă CSS poate fi numită o versiune mai rece și îmbunătățită FlexBox, deoarece FlexBox vă permite să lucrați doar într-un singur plan: fie să creați coloane, fie să creați rânduri.
Grilele CSS vă permit să faceți mai mult, deoarece funcționează pe ambele planuri în același timp. Astfel, crearea blocurilor de site-uri adaptive este mult mai ușoară, iar posibilitățile de aranjare a obiectelor după bunul plac sunt pur și simplu nelimitate.
Vă invităm să vizionați un videoclip complet despre învățarea grilelor CSS pentru a înțelege instantaneu esența Grilă CSS:
- Lecție despre ;
În timpul lecției au fost create trei pagini, codul pentru fiecare pagină poate fi copiat mai jos.
Primul dosar
Al doilea dosar
Al treilea dosar
Principiul de funcționare
Lucrul cu grile este foarte simplu. Algoritmul acțiunilor de aici este următorul:
- Creăm un bloc principal și plasăm alte blocuri în el ( secțiuni);
- Adăugați proprietatea display: grid la blocul principal;
- Proprietățile grilei CSS pot fi acum aplicate tuturor elementelor blocului principal;
- Adăugarea diferitelor proprietăți. Puteți găsi documentație despre toate proprietățile posibile;
Fiecare bloc poate fi setat în lățime, înălțime și locație. Blocurile care sunt create pe baza de grile au imediat un design adaptiv care ajustează blocurile la diferite rezoluții ale ecranului.
Astfel poți scrie mai puțin și obține mai mult. Ce altceva ar putea fi mai cool? Împărtășiți-vă experiența de utilizare a grilelor în proiectele dvs. în comentariile la acest articol ⇣
Am observat tehnica Grids acum aproximativ un an. Apoi această tehnică, după un studiu foarte superficial, mi s-a părut inutilă și foarte experimentală; am fost respins de faptul că pentru implementări era necesar să se creeze un marcaj suplimentar. Dar acum devine dificil să nu observi numărul de site-uri web construite pe grilă, precum și numărul de articole și tutoriale despre acesta. Datorită acestora din urmă, a devenit mult mai ușor să studiezi și să înțelegi principiile și conceptele și să tragi concluzii mai mult sau mai puțin reale. Concluzia mea un an mai târziu este: „Este simplu și solutie utila care a fost creat vreodată pentru aspectul paginilor web, fiecare web designer care se respectă ar trebui să știe.”
Oricine a lucrat vreodată cu o grilă știe ce este o grilă. editori grafici (Photoshop, Fireworks, Gimp etc.)și, desigur, a apreciat necesitatea acestuia atunci când a creat orice design. Dar cum se implementează o Grilă pe web? De fapt Tabular aspectul a fost un design real de pagină web cu o Grilă, fără îndoială foarte convenabil. Dar nu și utilizarea intenționată a elementelor masa a fost îngrozitor.
Din fericire, popularitatea enormă a standardelor web a crescut și continuă să crească anul trecut, precum și suportul lor în browserele moderne, ne-au oferit posibilitatea de a crea pagini multifuncționale cu foarte puține markupuri logice. Acest aspect a fost numit bloc. Dar de asemenea bloc layout-ul s-a dovedit a fi partea slabă. Atunci când creați pagini cu un set imens de elemente de diferite dimensiuni și semnificații, marcarea unor astfel de pagini a devenit o sarcină foarte dificilă și, dacă mai multe persoane lucrează la marcaj, o astfel de muncă poate deveni un coșmar.
Și apoi tehnica folosind Grid a venit în ajutor. Această tehnică este un hibrid între blocȘi Tabular aspect. Folosind-o ne dă:
- viteză și ușurință de dezvoltare
- libertatea de poziționare
- proporționalitatea elementelor paginii și plasarea acestora
Ce este aspectul cu Grid? În primul rând, este un concept. Un concept care include multe aspecte de design și foarte puține reguli pentru implementarea lui. Acest lucru oferă libertate deplină și nicio standardizare în execuția sa. Voi spune și mai multe - aceeași Grid poate fi implementată de cei mai mulți căi diferite. Dacă ați citit deja despre Grilă, poate ați observat că fiecare autor pleacă dintr-un unghi nou, intrând adânc în detalii, aceasta este, ca să spunem ușor, confuz. Din fericire, au început să apară Sisteme Grid - biblioteci CSSși pentru lucrul cu Grid. Și folosind exemplul lor, puteți stăpâni foarte rapid principiile de bază ale acestei tehnici.
Cred că nu are sens să scrieți despre toate aspectele Grid-ului; puteți găsi cu ușurință informații despre aceasta pe Internet. Vă sugerez să vă creați propriul simplu Sistem grilă.
Mai întâi trebuie să înțelegeți că grila constă din coloane și spații între ele. Există trei valori principale - lățimea grilei, lățimea coloanei și lățimea spațiului dintre coloane. Lățimea coloanelor depinde de numărul lor.
Să încercăm să facem o grilă de 950 de pixeli lățime cu 16 coloane cu spațiere de 10 pixeli, deci o coloană ar trebui să aibă o lățime de 50 de pixeli. După ce am înțeles toate valorile, deschidem orice editor grafic cunoscut de noi și creăm un layout. De asemenea, puteți adăuga padding la Grid din stânga și din dreapta, să zicem 20 de pixeli fiecare, iar acest lucru va avea ca rezultat un aspect cu o lățime de 990 de pixeli. Puteți vedea exemplul meu.
Acum putem începe să ne creăm biblioteca. La fel ca majoritatea bibliotecilor CSS, a noastră are nevoie de o resetare globală, sugerez Resetarea CSS a lui Eric Mayer, păstrând resetare.css hai sa cream grid.css la care putem adăuga imediat o metodă de curățare a containerelor care conțin blocuri plutitoare – Clear Fix. Primul lucru de care avem nevoie este o regulă pentru un container care va conține toate coloanele noastre. Lățimea fiecărui container este egală cu lățimea grilei noastre.
.container(
marja: 0 auto;
latime: 950px;
}
Acum putem adăuga o regulă pentru coloanele noastre, care conține lățimea și umplutura. Indentarea acționează ca un gol (jgheab)între coloane.
.coloană(
plutește la stânga;
margine-dreapta: 10px;
preaplin: ascuns;
latime: 50px;
}
Ultima coloană nu are nevoie de indentare; pentru a face acest lucru, să adăugăm și o regulă pentru ea:
Containerele noastre conțin coloane, coloanele sunt blocuri plutitoare, așa că trebuie curățate. Pentru a evita .clearfix inutil în markup, puteți aplica această regulă containerelor:
.clearfix:după, .container:dupa{
continut: ".";
afisare: bloc;
inaltime: 0;
clar: ambele;
vizibilitate: ascuns;
}clearfix, .container(afisare: inline-block; )
/* Se ascunde din IE-mac \*/
*html.clearfix, *html.container(înălțime: 1%;)
.clearfix, .container(afisare: bloc;)
/* Încheiați ascunderea din IE-mac */
Acum putem începe cu coloanele noastre. Coloanele pot avea două sau trei lățime și așa mai departe. Pentru a face acest lucru, le putem aplica următoarele reguli:
.span-1 ( lățime: 50px; )
.span-2 (lățime: 110px; )
.span-3 (lățime: 170px; )
.span-4 (lățime: 230px; )
.span-5 (lățime: 290px; )
.span-6 (lățime: 350px; )
.span-7 (lățime: 410px; )
.span-8 (lățime: 470px; )
.span-9 (lățime: 530px; )
.span-10 (lățime: 590px; )
.span-11 (lățime: 650px; )
.span-12 (lățime: 710px; )
.span-13 (lățime: 770px; )
.span-14 (lățime: 830px; )
.span-15 (lățime: 890px; )
.span-16 ( lățime: 950 px; margine-dreapta: 0; )
În principiu, acesta este tot ceea ce este necesar pentru implementările Grid; puteți adăuga, de asemenea, un wrapper și o clasă pentru vizualizarea Grid-ului cu un aspect. Să creăm main.css si adauga la el:
.wrapper(
marja: 0 auto;
latime: 990px;
}
.acoperire(
fundal: url transparent(overlay.png) repetare-y derulare sus, stânga;
}
Iată cum ar putea arăta aspectul:
Cred că este suficient pentru început.
Puteți vedea exemplul meu
În jurul anului 2012 sau 2013, am fost introdus în dezvoltarea web. Treptat am început să studiez singur această direcție. Curând mi-am dat seama că CSS face o mulțime de lucruri semnificative, dar nu creează un marcaj adecvat. Există atât de multe hack-uri încât este prea greu să le înțelegi. De aceea, în standardele moderne, care vor fi discutate în acest articol, s-a acordat o atenție deosebită lucrului cu marcaj.
Ce vei învăța din acest articol:
- cum lucrați cu marcajul CSS;
- diferența dintre abordările moștenite și standarde moderne;
- cum să începeți cu noi standarde (Flexbox și Grid);
- de ce ar trebui să vă pese de aceste standarde moderne.
Cum lucram cu marcajul CSS
Sarcină
Să modelăm o problemă destul de standard: cum se creează o pagină cu două secțiuni - o bară laterală și o zonă principală de conținut - care au aceeași înălțime, indiferent de dimensiunea conținutului?
Iată un exemplu spre ce ne propunem:
Bara laterală și zona principală de conținut aceeasi inaltime, indiferent de dimensiunea conținutului
În primul rând, vă voi arăta cum să rezolvați această problemă folosind abordări vechi.
1. Creați un div cu două elemente
De exemplu,
Evident, principalul are mai mult text.
Să evidențiem deoparte cu o culoare pentru a face mai ușor de distins:
Deoparte (culoare: #fff; culoare de fundal: #8cacea; )
2. Așezați ambele secțiuni una lângă alta
Pentru a face acest lucru, vom scrie următoarele:
Deoparte, principal (float: stânga; )
Acest stil împărtășește spatiu disponibilîn proporţiile şi seturile necesare plutesc deoparte şi principal .
Două blocuri situate unul lângă celălalt
Pentru cei care nu sunt familiarizați cu plutirea, este un mod relativ vechi de a muta elementele la stânga sau la dreapta.
După cum puteți vedea în imaginea de mai sus, sarcina nu este încă finalizată - înălțimea barei laterale nu se potrivește cu înălțimea zonei principale. Să reparăm asta.
3. Utilizați afișajul: truc de masă
Pentru a rezolva această problemă, trebuie să utilizați display: table .
Dacă nu ești familiarizat cu el, iată ce trebuie să faci:
- Facem din containerul părinte (în cazul nostru elementul body) un tabel: body ( display: table; )
- Scoateți plutitorul și faceți elemente copil deoparte și principal după celulele tabelului: deoparte, principal (afișare: celulă-tabel; )
Odată ce am făcut acest lucru, problema poate fi considerată rezolvată. Cel putin asa s-a rezolvat inainte.
Ambele blocuri au acum aceeași înălțime.
Diferența dintre abordările vechi și standardele moderne
Acum că aveți o idee despre cum a fost rezolvată problema în trecut, să aruncăm o privire la ce pot face Flexbox și Grid.
Flexbox și Grid sunt solutii ideale pentru marcajul CSS, care sunt standarde moderne. Dacă trebuie să scrieți cod CSS nivel bun, apoi asigurați-vă că le studiați.
Rezolvarea unei probleme folosind Flexbox
Contextul de formatare Flexbox este inițializat prin crearea unui container flexibil.
Elementul părinte este body . Conține o bară laterală și o zonă principală. Creați un container:
Corp ( afișaj: flex; )
Flexbox în acțiune
Să nu uităm de proporții:
Deoparte (lățimea: 25%; ) principal (lățimea: 75%; )
Problema rezolvata
Puteți face multe lucruri diferite cu Flexbox:
Și am atins doar vârful aisbergului Flexbox.
Flexbox este disponibil în majoritatea browserelor acceptate. Poate fi folosit pe deplin în Firefox de la versiunea 28, Chrome de la 29, Safari de la 6.1 și Edge de la 12.
Notă traducere Al nostru vă va ajuta să înțelegeți Flexbox.
Rezolvarea problemei folosind Grid
Spre deosebire de Flexbox, care funcționează în mare parte într-o singură dimensiune, cu CSS Grid puteți folosi atât rânduri, cât și coloane. Să vedem cum să ne rezolvăm problema cu ajutorul ei.
Totul începe la fel ca în cazul Flexbox. Creați un container:
Corp (afișare: grilă; )
Iată tot CSS-ul:
Corp (afișare: grilă; culoare de fundal: #eeeeee; ) deoparte (culoare: #fff; culoare de fundal: #8cacea; )
Și asta obținem:
Opțiune primară
Grid este disponibil în majoritatea browserelor acceptate, deși în cantități mai mici. Poate fi utilizat pe deplin în Firefox de la versiunea 52, Chrome de la 57, Safari de la 10.1 și Edge de la 16.
Ultima noastră imagine nu este încă diferită de cele anterioare. Deci care este magia?
Ce se întâmplă dacă împărțim proporțiile lățimii ca înainte:
Deoparte (lățimea: 25%; ) principal (lățimea: 75%; )
Distribuție proporțională a lățimii pentru elementele copil
Da, rezultatul este diferit, dar nu ne convine. Bara laterală nu este încă situată în partea laterală a zonei principale.
Aici ajungem la esența markupului Grid. După inițializarea containerului Grid cu display: grid, trebuie să definiți rândurile și rândurile din acesta.
Iată cum se face:
Corp (grilă-șablon-coloane: 30% 70%; )
O soluție cu o singură linie este frumoasă, nu-i așa? grid-template-columns definește proporțiile coloanelor din grilă.
Problema rezolvata
Dar poți face mult mai mult cu Grid.
Mai întâi, să adăugăm puțină culoare blocului principal pentru a face exemplele mai clare:
Principal (culoare de fundal: rgba(39,174,96,1); culoare: #fff; )
Iată ce ar trebui să obținem:
Umplerea zonei de conținut principal cu culoare
Să vedem ce bine are de oferit Grid:
- Puteți defini un decalaj între coloane: body ( grid-column-gap: 15px; )
Iată rezultatul:
Arată mult mai îngrijit cu un spațiu între coloane.
Nu este nevoie să adăugați umplutură la blocurile laterale și principale: grid-column-gap face asta.
- Puteți face câte coloane aveți nevoie. Exemplele de mai sus au folosit doar un element aparte și principal. Să mai adăugăm două:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. S-a adăugat o întrerupere de linie
Pentru a simplifica lucrurile, puteți folosi comanda rapidă: grid-gap: 15 px în loc de grid-row-gap și grid-column-gap .
- Puteți defini dimensiunile rândurilor: body (grid-template-rows: 200px 300px 400px; )
Înălțimi de rând diferite
Acum, înălțimea primei, a doua și a treia linii este de 200, 300 și, respectiv, 400 de pixeli.
Acest lucru este suficient pentru început - dar asta nu este tot.
Cum să începeți cu noile standarde?
Ați văzut un exemplu despre modul în care Flexbox și Grid oferă soluții de aspect mai bune. Deci, cum să încep?
De ce ar trebui să vă pese de aceste standarde?
Dacă încă nu înțelegeți de ce merită să utilizați Flexbox și Grid, iată câteva probleme pe care le puteți întâlni cu soluțiile anterioare:
- dacă folosești blocuri plutitoare și clearfix, știi că pot cauza probleme;
- cu poziționare absolută, elementele se pot suprapune între ele;
- folosind display: tabelul lasă o mulțime de marcaje inutile;
- la folosind inline-block vor fi probleme cu spațiile goale.