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.
W css grid tak samo jak w flexboxie polegamy
na relacji rodzić dziecko jeżeli dobrze rozumiesz
flexboxa to nie powinieneś mieć większego problemu ze zrozumieniem css grida
na elemencie który będzie naszym kontenerem wrapperem
ustawiamy klasę css grid i wtedy wszystkie elementy
które znajdują się bezpośrednio w tym elemencie html'owym
będą grid itemami na samych grid itemach nie musimy
ustawiać żadnych dodatkowych klas żadnych właściwości
one dzieją się automatycznie czyli jeśli ustawimy na containerze
display grid
to wtedy wszystkie elementy container item
czy tak naprawdę wszystkie elementy które znajdują się bezpośrednio wewnątrz tego
elementu będą miały będą miały tryb renderowania ustawiony
jako grid item nie ma takiej właściwości w css więc nie ma możliwości nawet
ustalenia display grid item po prostu to się dzieje
automatycznie i nie musimy o tym pamiętać to
o czym musimy pamiętać to to że ustawiając na kontenerze
właściwość display grid wszystkie elementy będą renderowane
jako grid item tak samo jak we flexboxie mieliśmy flex
itemy one miały swoje właściwości kontenery miały swoje właściwości w css grid
jest dokładnie tak samo oczywiście możemy też zagnieżdżać
nasze layouty czyli jeśli ustawimy sobie na elemencie
numer 3 czyli item 3 display grid
to również item 3 będzie miał tą
właściwość to znaczy będzie zarówno kontenerem grida jak i
dzieckiem grida o klasie kropka container jeśli
dodamy teraz jakieś elementy do środka diva numer
3 tutaj skorzystamy z emmeta żeby troszkę nam ułatwił
generowanie markup
i powiedzmy że wygenerujemy
10 elementów o klasie nested wtedy ten
element jest zarówno grid itemem jak i kontenerem o
klasie grid możemy teraz ustawić różne właściwości powiązane z css
grid na przykład grid-template-columns i
wpisać powiedzmy 5
kolumn o szerokości 1fr czyli fractional unit
i w tym momencie mamy kontener grida
o klasie kropka container ale dziecko tego kontenera
również jest grid containerem tak więc mamy możliwość zagnieżdżania
css grid w sobie a już niedługo również będziemy mogli
manipulować relacją między rodzicem a
zagnieżdżonym grid containerem przy pomocy tak zwanego subgrida o
którym dowiesz się pod koniec tego kursu wiedząc to wszystko możemy
przejść do faktycznej nauki css-grid zapraszam do następnej lekcji
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;
}
</style>Efekt 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 class="nested">1</div>
<div class="nested">2</div>
<div class="nested">3</div>
<div class="nested">4</div>
<div class="nested">5</div>
<div class="nested">6</div>
<div class="nested">7</div>
<div class="nested">8</div>
<div class="nested">9</div>
<div class="nested">10</div>
</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;
}
.item3 {
display: grid;
grid-template-columns: repeat(5, 1fr);
}
</style>