Zaawansowane layouty
3 godz. 3 min · HTML i CSS · Full-stack i Programowanie
Wojciech PołowniakSr. Fullstack EngineerW początkowych lekcjach Kursu omówimy podstawową składnię CSS Grid, tak, by zbudować solidny fundament pod poznawanie kolejnych, bardziej rozbudowanych zagadnień. Na praktycznych przykładach poznasz i zrozumiesz różnice, jakie są pomiędzy CSS Grid a CSS Flexbox.
Po poznaniu niezbędnych, podstawowych zagadnień związanych ze składnią CSS Grid przejdziemy do tematu wykorzystania siatek. Wykorzystamy je do stworzenia responsywnych layoutów bez użycia media queries.
W kolejnych, bardziej rozbudowanych lekcjach kursu poznasz implikacje dotyczące dostępności. W obszernym rozdziale omówimy również szerzej najczęstsze błędy i nieporozumienia związane z CSS Grid.
Tak jak każda technologia, Grid ma swoje wady i zalety. Omówimy zarówno pierwsze, jak i drugie, tak, by wykorzystać pełen potencjał CSS Grid i nie dać się zniechęcić przez pewne jego wady. Dowiesz się również nieco na temat nadchodzących elementów w specyfikacji CSS Grid module level 2.
Aby być na bieżąco - warto uważnie śledzić najważniejsze i najbardziej aktualne źródła związane z CSS Grid. W końcowych rozdziałach pokażemy Ci naszym zdaniem najciekawsze źródła oraz osoby związane z Gridem, które warto znać oraz obserwować.
Jeśli chcesz poznać najbardziej aktualną i świetnie wspieraną metodę pozycjonowania elementów jaką jest CSS Grid, ten kurs jest właśnie dla Ciebie! Aby efektywnie korzystać z tego kursu potrzebujesz jedynie podstawowej wiedzy z zakresu HTML i CSS - a jeśli znasz Flexboxa, na pewno będzie Ci łatwiej zrozumieć niektóre koncepty.
Cześć w tej krótkiej lekcji z kursu
css grid zaawansowane layouty opowiem ci o tym jak zmieniać kolejność
wyświetlania danych elementów w siatce css grid tak
jak we flexboxie mamy do dyspozycji właściwość order czyli
na dowolnym elemencie powiedzmy elemencie 8 możemy
ustawić order i order przyjmuje wartości numeryczne
gdzie domyślną wartością jest 0 czyli jeśli zrobimy order
0 to tak naprawdę nic się w naszym layout'cie nie zmieniło mamy
tutaj jeden dwa trzy cztery pięć to jest pierwszy wiersz no i 6 7 8 9 10
to jest drugi wiersz 5 kolumn w naszej siatce natomiast
jeśli zmienimy wartość order na dowolnym
grid item to tak samo jak we flex itemach element zmieni
swoje położenie tak jakby zmienił się w markupie czyli jeśli zrobimy order minus
1 to element ten będzie miał mniejszy indeks
niż pozostałe w związku z czym zostanie przesunięty
na sam początek i tak też się stało jeśli ustalilibyśmy
wartość 1 to element zostanie dodany na
koniec całego grida czyli nie myślimy tutaj nawet o torach
czy kolumnach czy wierszach po prostu tak jakbyśmy zmienili kolejność
tych elementów w markupie możemy również oczywiście dawać większe wartości
takie jak jeśli za deklarujemy na itemie numer
powiedzmy trzy order 2
to jak to będzie wyglądało jako wszystkie z nich mają order
0 więc one będą pierwsze następnie będzie element
8 następnie element trzeci sprawdźmy to i zgadza się wszystkie
elementy są ułożone w swojej domyślnej kolejności
oprócz tych dwóch na którym dodaliśmy niestandardowy order czyli
inny niż zero no i oczywiście jeśli będziemy dalej iść w tym tokiem
rozumowania zmienimy dziesiątkę na order minus 1
to dziesiątka będzie pierwsza następne będą wszystkie z
orderem 0 czyli wszystko no i 8 i 3 na końcu
generalnie mało będzie sytuacji kiedy będziecie potrzebowali
konkretnie ustawiać order na elementach wewnątrz siatki
css grid ponieważ możecie to samo zrobić przy pomocy
grid-column czy grid-row i będzie to o
wiele bardziej kontrolowane będziecie mieć większą kontrolę nad tym gdzie
dany element się znajduje natomiast jeśli spotkacie się z sytuacją że order
będzie wam potrzebny tak jak to byłoby w flexboxie no to możecie z tej
właściwości skorzystać tylko musicie pamiętać że zmieniając order
będziecie wpływali na to jak przeprowadzana będzie na przykład nawigacja
klawiaturą bądź jak elementy będą czytane przez czytniki
ekranowe może to doprowadzić do tak zwanego rozstrzelenia między
markupem a prezentacją elementów w warstwie wizualnej mówiłem
o tym więcej w kursie css flexbox od podstaw więc jeśli zależy
wam na accessibility i ich chcecie tworzyć layouty dostosowane
również do użytkowników czytników ekranowych czy po prostu użytkowników klawiatury
moja rada unikajcie order starajcie się korzystać z grida w taki
sposób aby podążał on za flow content czyli za
naturalnym biegiem strony tak jak jest zakodowane to w markupie to
wszystko w tej lekcji do zobaczenia w następnej
Stan końcowy · 3 min
<div class="container">
<div class="item item1">1</div>
<div class="item item2">2</div>
<div class="item item3">3</div>
<div class="item item4">4</div>
<div class="item item5">5</div>
<div class="item item6">6</div>
<div class="item item7">7</div>
<div class="item item8">8</div>
<div class="item item9">9</div>
<div class="item item10">10</div>
</div>
<style>
.container {
display: grid;
grid-template-columns: repeat(5, 100px);
}
.item8 {
order: 1;
}
.item3 {
order: 2;
}
.item10 {
order: -1;
}
</style>Stan początkowy
<div class="container">
<div class="item item1">1</div>
<div class="item item2">2</div>
<div class="item item3">3</div>
<div class="item item4">4</div>
<div class="item item5">5</div>
<div class="item item6">6</div>
<div class="item item7">7</div>
<div class="item item8">8</div>
<div class="item item9">9</div>
<div class="item item10">10</div>
</div>
<style>
.container {
display: grid;
grid-template-columns: repeat(5, 100px);
}
</style>