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 lekcji z kursu css grid zaawansowane layouty opowiem
o masonry layout czyli o takim layout'cie który wygląda
trochę jak pinterest i składa się z tego że elementy
mają stałą szerokość układane są od lewej do prawej następnie
z góry na dół natomiast ich wysokość może być różna i
jak zrobić to w css gridzie to
jest bardzo częste pytanie zadawane przez osoby które po prostu muszą zrealizować
pewną potrzebę biznesową i słysząc o css gridzie faktycznie
chcą wykorzystać tą technologie do zrobienia tego konkretnego przypadku css
grid nie jest idealny do stworzenia tego typu layoutów
przede wszystkim dlatego bo masonry layout
wygląda mniej więcej w ten sposób czyli mamy równe kolumny natomiast
wysokości każdego z elementów w danej kolumnie są różne
co się z tym wiąże nie możemy stworzyć jednego wiersza
jednej kolumny ponieważ tutaj widzimy takie schodki co oznacza
że jeden wiersz czyli elementy od jeden do
pięć jeden dwa trzy cztery pięć nie mają równej wysokości wiersza
i to jest największy problem w tworzeniu tego typu layoutu w gridzie
można do tego co prawda dojść ale
nie jest to rozwiązanie ani optymalne ani
generalnie grid nie jest stworzony do tego typu wizualnej reprezentacji to
co w gridzie zobaczylibyście gdybyście spróbowali coś takiego zakodować jest mniej więcej coś
takiego czyli mamy elementy różnej wysokości natomiast wiersz
dalej jest taki sam czyli te elementy z następnego wiersza nie mogą wskoczyć
tak jakby w nav poprzedni możemy to oczywiście
zrobić javascriptem i spróbować te elementy przesunąć
z dołu do góry czy to jakimś nie wiem marginesem
czy w ogóle wystrzeliwując je poza css grid podejść
tu jest naprawdę bardzo dużo ale żeby stworzyć dobry
masonry layout w oparciu o css grida musimy tak czy siak skorzystać
z javascriptu dlatego uważam że css-grid nie jest stworzony
do tego typu potrzeb biznesowych do tego typu stron pomimo
tego że osiągnąć to można tutaj andy barefoot pokazuje
jak jego podejście polega na tym że oczywiście tworzymy
jakąś nie określoną liczbę kolumn w zakresie od
250 pikseli do jednego fractional unit ustawiamy
tam grid-gap i tak dalej natomiast w
jego propozycji on ustawia każdy z
elementów tak by miał wysokość przynajmniej dwóch
wierszy i w zależności od tego jak dużo treści dany
element będzie posiadał to już musimy wykryć javascriptem będziemy zmieniać jego
rows span tak jakby czyli po prostu wysokość w pionie na
ile wierszy ma się rozciągnąć i ręcznie wykalkulować to
tak aby elementy układały się w ten sposób moja propozycja co do
masonry layout jest taka jeśli naprawdę musicie
korzystać z tego typu layoutów to nie kotujcie go sami skorzystajcie
z biblioteki która takie ala pinterestowe ułożenia
elementów dostarcza bo na pewno są takie elementy te biblioteki
będą miały swoich maintainerów czyli osoby które dbają o
te projekty o te biblioteki będziecie wiedzieli że tam nie ma bugów jeżeli będzie
bug to będziecie mogli go zgłosić i możliwe że masz problem
rozwiąże się sam natomiast nie proponowałbym implementacji tego samodzielnie
chyba że faktycznie dobrze czujecie się w javascripcie i chcecie
spróbować swoich sił przy tworzeniu tego typu layoutu css
grid nie jest narzędziem do tego typu rozwiązań jeśli chcecie śmiało
spróbujcie zreprodukować masonry layout może na podstawie tego artykułu na medium
autorstwa andy'ego barefoota a jeśli nie to skorzystajcie z odpowiedniej biblioteki