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.
Hej w tej lekcji css grid zaawansowane layouty opowiem
o automatycznym dostosowywaniu i automatycznym wypełnianiu o co
tutaj chodzi generalnie css grid dostarcza nam kilka
słów kluczowych kilka funkcji niektóre z funkcji już poznaliśmy jak na przykład repeat
a jednym z takich słów kluczowych jest auto-fit i auto-fill
do czego można go wykorzystać no obecnie w
naszych przykładach korzystaliśmy z reguły z konkretnej liczby kolumn
i takim rozmiarze który pozwoli zająć całą
dostępną przestrzeń natomiast czasem faktycznie chcemy aby
nasze elementy miały stałą szerokość i aby mieściło się ich
jak najwięcej na stronie jak jest to możliwe czyli w takim przypadku musielibyśmy
tutaj ustawić na przykład 9 kolumn natomiast na większych ekranach
może byłoby to 12 kolumn i musielibyśmy tworzyć osobne
media queries aby obsłużyć odpowiednią ilość kolumn na odpowiednich
rozdzielczościach no i nie jest to po prostu wygodne
rozwiązanie więc to co możemy zrobić jest nie deklarowanie
ile kolumn ma zostać wygerenowanych tylko
pozostawienie tego samemu silnikowi css-grid jak to zrobić
można wykorzystać właśnie wspomniane słowo kluczowe na przykład auto-fit
i w tym momencie po zapisaniu mamy
tyle elementów na stronie tyle kolumn ile
faktycznie mieści się w naszym viewporcie czyli jeśli zwężymy ekran
to faktycznie im mniejszy ekran tym mniej
elementów na stronie jest wyświetlane jest to bardzo podobne do
silnika który zarządza flexboxem gdzie jeśli
ustawimy faktycznie zawijanie wierszy przez flex-wrap no
to elementy będą zawijane do następnej linii jeśli
nie będą mieściły się już w viewporcie i to dokładnie daje
nam auto-fit i auto-fill natomiast
jaka jest różnica między tymi dwoma słowami kluczowymi no
spróbujemy zaaplikować tutaj auto-fill i zobaczymy różnicę jak
widać nie ma różnicy a to dlatego bo one
różnią się w momencie kiedy jest za mało elementów aby
faktycznie wypełnić dostępny viewport kolumnami
czyli jeśli zmniejszymy ilość naszych elementów powiedzmy do
sześciu zapiszemy wpisujemy
auto-fill tak samo auto-fit
tak samo natomiast jest to złudne ponieważ jeśli sprawdzimy
to w devtoolsach i podświetlimy całą naszą siatkę to
zobaczymy że przy auto-fit mamy stworzone 6
kolumn pierwsza druga trzecia czwarta piąta szósta tutaj
widzimy 10 czyli tak jakby te kolumny są tworzone ale
mają zerową szerokość natomiast w przypadku auto-fill
te kolumny są już jawnie tworzone to może
mieć znaczenie w przypadku kiedy chcielibyśmy ustawiać treść
wewnątrz naszego grida na jego początku końcu tak
jak robiliśmy to we flexboxie służy do tego właściwość
na przykład justify-content end i jak
widzimy w przypadku auto-fill ten element nie przesunął się za bardzo natomiast
auto-fit element wyląduje na końcu faktycznego
kontenera grida czyli przez to że robimy auto-fit wypełniamy
cały kontener kolumnami nawet jeśli są one puste
a przy auto-ficie wypełniamy tylko tyle kolumn ile
jest faktycznie potrzebne i możemy później manipulować położeniem tychże
elementów wewnątrz kontenera za pomocą dodatkowych słów kluczowych więc
auto-fill i auto-fit są to słowa kluczowe które póki co działają tylko
i wyłącznie z gridem zobaczymy gdzie specyfikacja nas poprowadzi ale
są niezwykle przydatne jeśli chcemy kontrolować ilość kolumn
czy wierszy w sposób elastyczny niezależny
od viewportu ponieważ w zależności od tego
jak mamy szeroki ekran bądź wąski te elementy będą nam
się zawijały ale jeśli będziemy mieli nadmiarową
treść to możemy albo te dodatkowe kolumny wyświetlić albo
je ominąć dzięki to wszystko w tej 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>
<style>
.container {
display: grid;
grid-template-columns: repeat(5, 1fr);
}
</style>Stan końcowy · 4 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>
<style>
.container {
display: grid;
grid-template-columns: repeat(auto-fit, 100px);
justify-content: end;
}
</style>