Table of Contents
Aspectul grilei
CSS Grid Layout, pur și simplu cunoscut sub numele de Grid, este o schemă de aspect care este cea mai nouă și cea mai puternică din CSS. Este acceptat de toate browserele majore și oferă o modalitate de a poziționa elemente pe pagină și de a le deplasa.
Poate atribui automat elemente zone, dimensionați-le și redimensionați-le, aveți grijă să creați coloane și rânduri pe baza unui model pe care îl definiți și să efectuați toate calculele folosind noua introducere fr
unitate.
De ce Grid?
- Puteți avea cu ușurință o grilă cu 12 coloane cu o singură linie de CSS.
grid-template-columns: repeat(12, 1fr)
- Grila vă permite să mutați lucrurile în orice direcție. Spre deosebire de Flex, unde puteți muta articole fie pe orizontală (
flex-direction: row
) sau vertical (flex-direction: column
) – nu ambele în același timp, Grid vă permite să mutați orice element de grilă la orice predefinit zona grilei pe pagina. Elementele pe care le mutați nu trebuie să fie adiacente. - Cu CSS Grid, puteți modificați ordinea elementelor HTML folosind numai CSS. Mutați ceva de sus în dreapta, mutați elementele aflate în subsol în bara laterală etc. În loc să mutați
<div>
din<footer>
la<aside>
în HTML, puteți schimba destinația de plasare cugrid-area
în foaia de stil CSS.
Grilă vs. Flex
- Flex este unidimensional – orizontal sau vertical, în timp ce Grid este bidimensional, ceea ce înseamnă că puteți muta elemente atât în plan orizontal cât și vertical.
- În Grid, aplicăm stiluri de aspect containerului părinte și nu articolelor. Pe de altă parte, Flex vizează elementul flex pentru a seta proprietăți precum
flex-basis
,flex-grow
, șiflex-shrink
- Grid și Flex nu se exclud reciproc. Puteți utiliza ambele pe același proiect.
Verificarea compatibilității browserului cu @supports
În mod ideal, atunci când creați un site, îl veți proiecta cu Grid și veți folosi Flex ca rezervă. Puteți afla dacă browserul dvs. acceptă grila cu @support
Regula CSS (interogare de caracteristică). Iată un exemplu:
.container {
display: grid; /* display grid by default */
}
@supports not (display: grid) { /* if grid is not supported by the browser */
.container {
display: flex; /* display flex instead of grid */
}
}
Noțiuni de bază
Pentru a transforma orice element într-o grilă, trebuie să îi atribuiți display
proprietate pentru grid
, ca astfel:
.conatiner {
display: grid;
}
Si asta e. Tocmai ai făcut-o .container
o grilă. Fiecare element din interiorul .container
devine automat un element de grilă.
Definirea șabloanelor
Rânduri și coloane
grid-template-columns: 1fr 1fr 1fr 1fr;
grid-template-rows: auto 300px;
Zone
grid-template-areas:
"a a a a"
"b c d e"
"b c d e"
"f f f f";
sau
grid-template-areas:
"header header header header"
"nav main main sidebar";
Zonele de rețea
Iată câteva exemple de cod despre cum să definiți și să atribuiți zone de grilă
.site {
display: grid;
grid-template-areas: /* applied to grid container */
"head head" /* you're assigning cells to areas by giving the cells an area name */
"nav main" /* how many values kind of depends on how many cells you have in the grid */
"nav foot";
}
.site > header {
grid-area: head;
}
.site > nav {
grid-area: nav;
}
.site > main {
grid-area: main;
}
.site > footer {
grid-area: foot;
}
fr
unitate
Grid introduce un nou fr
unitate, care înseamnă fracțiune. Lucrul bun despre utilizarea fr
Unitatea este că se ocupă de calcule pentru dvs. Folosind fr
evită problemele de marjă și umplere. Cu %
și em
etc. devine o ecuație matematică atunci când se calculează grid-gap
. Dacă ai folosit fr
unitate, va calcula automat atât dimensiunile coloanei, cât și ale jgheaburilor și va ajusta dimensiunea coloanelor în consecință, plus că nici la sfârșit nu vor exista goluri de sângerare.
Exemple
Modificarea ordinii elementelor în funcție de dimensiunea ecranului
Să presupunem că doriți să mutați subsolul pe ecranele mici și spre dreapta pe ecranele mai mari și există o grămadă de alte elemente HTML între cele două.
Soluția simplă este schimbarea grid-template-areas
pe baza dimensiunii ecranului. Poti de asemenea modificați numărul de coloane și rânduri în funcție de dimensiunea ecranului, de asemenea. Aceasta este o alternativă mult mai curată și mai simplă la sistemul Grid al Bootstrap (col-xs-8 col-sm-6 col-md-4 col-lg-3
).
.site {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-areas:
"title title"
"main header"
"main sidebar"
}
@media screen and (min-width: 34em) { /* If the screen is big enough, use a different template for grid areas */
.site {
grid-template-columns: 2fr 1fr 1fr;
grid-template-areas:
"title title title"
"main header header"
"main sidebar footer"
}
}
Vezi stiloul CSS Grid prin exemplu – 2 (zone de grilă + grilă) de Aamnah Akram (@aamnah) pe CodePen.