9.2. fejezet¶
A CSS Grid Layout egy elrendezési módszer, amely lehetővé teszi a weboldal elemeinek pontos és rugalmas elhelyezését sorokban és oszlopokban. A grid segítségével komplex elrendezéseket hozhatunk létre minimalisztikus és intuitív CSS kóddal. A CSS Grid különleges tulajdonságokkal rendelkezik a grid konténer és a grid elemek beállítására.
Grid Konténer¶
Ahhoz, hogy a grid layoutot használhassuk, először egy elemnek grid konténerként kell működnie.
Ezt a display: grid;
vagy display: inline-grid;
tulajdonsággal érhetjük el.
Példa: grid használata
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
A fenti példában egy Grid konténert (.grid-container
) definiálunk a display: grid;
tulajdonsággal.
A konténer három oszlopból áll (grid-template-columns: 1fr 1fr 1fr;
), ahol minden oszlop egyenlő szélességű.
Az elemek között 10 pixel hézag (gap: 10px;
) található. A konténer hat rácselemet (.grid-item
) tartalmaz,
amelyek mindegyike kék háttérszínnel és fehér szöveggel rendelkezik.
Az fr mértékegység¶
Az fr
egy speciális mértékegység, amelyet grid esetében vezettek be. Az fr egy rugalmas egységet képvisel,
amely a rendelkezésre álló terület egy részét jelenti. A fenti példában azt látjuk, hogy 1+1+1 fr-t használtunk, szóval
mind a három oszlop 33%-nyi területet fog foglalni.
Ha a rendelkezésre álló terület 1000px, és grid-template-columns: 400px 2fr 1fr
szerint hozzuk létre a gridet,
akkor ez esetben a felosztható maradék terület 600px, amelyet három részre kell osztani (2-1 arányban), szóval
az első oszlop 400px, a második oszlop szintén 400px, míg a harmadik oszlop 200px lesz.
Grid Tulajdonságok Grid Konténerekhez¶
grid-template-columns
ésgrid-template-rows
: Meghatározza a grid oszlopait és sorait.- Értékek lehetnek pixelben (px), százalékban (%), frakciós egységekben (fr), stb.
gap
vagygrid-gap
: Beállítja a hézagot a grid elemei között.- Külön oszlop (
column-gap
) és sor (row-gap
) hézag is definiálható. grid-template-areas
: Definiálja a grid területek nevét, hogy könnyebben el lehessen helyezni az elemeket a gridben.grid-auto-rows
ésgrid-auto-columns
: Meghatározza a sorok és oszlopok méretét, ha azok automatikusan jönnek létre.
Példa: grid template használata
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
|
A fenti példában a Grid konténer a grid-template-columns: 100px 1fr 2fr;
beállítással három oszlopra van bontva:
az első oszlop fix 100px széles, a második és harmadik oszlop frakciós egységekkel van definiálva.
Az grid-template-areas
segítségével területeket definiálunk, hogy egyszerűbb legyen az elemek elhelyezése.
Az elemek elrendezését a grid-area
tulajdonsággal határozzuk meg, így a "header", "main", "sidebar" és "footer"
külön területekre kerülnek.
Grid Tulajdonságok Grid Elemeihez¶
grid-column
ésgrid-row
: Meghatározza, hogy a grid elem mely oszlopban és sorban helyezkedjen el, illetve milyen szélességű/magasságú legyen.grid-column-start
,grid-column-end
,grid-row-start
,grid-row-end
: Részletesen meghatározhatjuk az elem pozícióját.grid-area
: Rövidítés, amellyel egy elem elhelyezkedését definiálhatjuk a grid területeken belül.
Példa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
|
Ebben a példában a Grid konténer négy egyenlő szélességű oszlopot és két sort tartalmaz.
Az első két rácselem (grid-item1
, grid-item2
) az első sorban helyezkedik el,
és mindegyik két oszlopot foglal el. A harmadik rácselem (grid-item3
) a második sorban helyezkedik el
és az egész sor szélességét kitölti. Az grid-column
és grid-row
tulajdonságok segítségével pontosan meghatározzuk
az elemek pozícióját.
Reszponzív Design Grid Layouttal¶
A CSS Grid kiválóan alkalmazható reszponzív desigban, mivel lehetővé teszi a layout gyors és hatékony módosítását különböző képernyőméretekhez és eszközökhöz.
Példa: grid használata reszponzív design megvalósítására
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
|
A fenti példában a Grid konténer automatikusan kitölti a rendelkezésre álló helyet a repeat(auto-fill, minmax(100px, 1fr))
beállítással. Az elemek minimum 100 pixel szélesek, de ha több hely áll rendelkezésre, akkor egyenlően oszlanak el.
Az @media query segítségével a kisebb képernyőkön az elemek minimum szélessége 50 pixelre változik,
és a padding is kisebb lesz. Ez biztosítja, hogy az elrendezés reszponzív és rugalmas legyen különböző készülékeken.