od Podstaw
4 godz. 7 min · HTML i CSS · Full-stack i Programowanie
Wojciech PołowniakSr. Fullstack EngineerFlexbox nie jest trudny - pod warunkiem, że rozumiemy dlaczego elementy renderują się w konkretny sposób. Do tego potrzebna jest szczegółowa wiedza o osiach flexboxa, o tym jak ustalane są ich kierunki i jak elementy będą układać się wzdłuż nich.Dopiero wtedy dobrze można zrozumieć jak działa rozszerzanie i kurczenie elementów, jak elementy będą zachowywać się przy zmianie rozmiaru okna przeglądarki czy przy przełączaniu wyświetlania z układu wierszy na kolumnowy. To wszystko oraz kilka innych mechanizmów ukrytych we Flexboxie znajdziesz dokładnie wyjaśnione w tym kursie - podgląd przykładów czy dodatkowe quizy po zakończeniu kursu pomogą w utrwaleniu zdobytej wiedzy.
Wielu developerów nie jest świadomych, że korzystanie z niektórych właściwości Flexboxa wpływa na dostępność naszych stron WWW - dostosowywanie naszych witryn pod czytniki ekranowe oraz użytkowników korzystających z witryn w sposób niestandardowy to temat który zyskuje na coraz większej popularności (zwłaszcza, jeśli planujesz kiedyś tworzyć strony rządowe - te są zobligowane do tworzenia stron dostępnych dla osób niepełnosprawnych).W tym kursie, dowiesz się jakie problemy może nieść za sobą używanie flexboxa i jak ich unikać.
Kurs ten jest dla wszystkich osób, które dobrze czują się z CSS - wystarczy podstawowa umiejętność pisania selektorów. Nie ma żadnych wymagań dotyczących JavaScript, czy znajomości konkretnych frameworków. Natomiast jeśli do tej pory korzystałeś/aś z innych, starszych technologii do pozycjonowania elementów i chcesz nauczyć się prostszej, dobrze wspieranej współczesnej technologii - nie trać czasu! Flexbox to idealne wprowadzenie do kolejnych sposobów pozycjonowania jak np. CSS Grid.
Cześć witam cię w kolejnej lekcji z kursu flexbox od podstaw i
teraz na szybciutko będziemy poprawiali te niedociągnięcia związane
z rwd które zostały w naszym w naszym nav bar'em
na podstawie youtube i
przejdziemy do kodowania pozostałych elementów witryny zacznijmy
może od tego że ukryjemy te wszystkie elementy które
nie powinny się znajdować w obecnym breakpoint'cie czyli ten trigger
i ten przycisk do wyjścia z widoku mobilnego dla tego
inputa czyli zobaczmy najpierw na jakiej rozdzielczości te
elementy się nam chowają jesteśmy na 650 i
656 już
elementy są ukryte czyli jeśli
napiszemy sobie taką regułę media i ustawimy max width
na 656
pikseli to możemy napisać style które będą
się aplikowały w tym konkretnym breakpoint'cie
czyli dla testów ustawmy sobie na body background
na orange i w momencie kiedy będzie
breakpoint większy niż 656 pikseli no to
no to tła pomarańczowego nie będziemy mieli więc
możemy napisać odpowiednie selektory na
podstawie tego co wpisaliśmy
tutaj w markup czyli sprawdźmy ten trigger action
trigger to nie jest to co nas interesuje pierwsza rzecz którą która
nas interesuje to jest is mobile search trigger a
drugie jest to ten przycisk back site-nav search back
czyli jeśli wpiszemy sobie tutaj selector is mobile search
trigger ustawimy mu o display powiedzmy na blok
a normalnie na
desktopie ustawimy mu display na none
to faktycznie na desktopie tego
elementu tutaj nie będzie no i analogicznie możemy ustawić to display
na none na tym search backu i
dopiero na
widoku mobilnym je wyświetlać czyli
teraz jak zmniejszymy rozdzielczość to oczywiście te elementy tutaj są
i to co tutaj zrobiłem to jest w sumie podejście desktop first
generalnie ludzie preferują podejście mobile-first natomiast
to zależy od aplikacji którą piszecie jeśli na przykład wasza
strona www to jest coś w rodzaju edytora
graficznego na przykład photoshopa w przeglądarce no to bez sensu jest
pisać to mobile-first ponieważ nie jest to podstawowa tak jakby
funkcjonalność witryny to że strona na mniejszych rozdzielczościach będzie
się jakoś zachowywać nie jest tak istotne i tak naprawdę tak długo jak
będziecie w stanie zarządzać waszym css'em i będzie zarówno
wasz widok mobilny jak i desktopowy wyglądał poprawnie wtedy
i desktop-first i mobile-first jest jak najbardziej okej więc rozwiążmy
teraz ten problem nie kurczącego się search
input'u może zróbmy to na takiej zasadzie że ustawimy
na search wrapperze min-width na powiedzmy
30 pikseli oraz na
ten search
inpucie też adekwatny
min-width jeszcze nie wiem jaki więc wejdziemy sobie do
faktycznego youtube no i ten input
on ma może użyjemy dimensions około 82
piksele z tym że on ma też padding powiedzmy
te 30 pikseli z prawej strony zarezerwowane na
tą oto klawiaturkę której my nie mam u siebie jeszcze w layout'cie więc
uznajmy że będzie to 80 pikseli
min-width 80 pikseli i
w sumie ustawimy tutaj w takim razie zamiast 30
pikseli na sto pikseli zobaczymy ten
element nam się trochę skurczył na 25 pikseli może
we wrapperze ustawimy jeszcze wysokość na sztywno 40
pikseli powiedzmy że takiego
rozmiaru byśmy oczekiwali i
na tym inpucie ustawimy
też padding right na
40 pikseli tylko
że w tym momencie nie chcemy aby ten element nam się kurczył więc na search
triggerze musimy ustawić flex-shrink na zero i
zobaczymy jak to się teraz zachowuje czyli na
desktopie search bar zajmuje tak dużo przestrzeni jak jest w stanie
jednocześnie i z lewej i z prawej odpowiedni margines
gdy element już się wystarczająco skurczy no
to pojawiają nam się elementy nawigacyjne jak
ta strzałka z lewej czy
trigger dla tego elementu ale my nie chcemy samego search wrappera pokazywać
jeśli jesteśmy na widoku mobilnym czyli tak
samo jak tutaj
pokazywaliśmy elementy to site nav search
wrapper
uwaga na literówki ustawiamy
na display none okej
sprawdzamy zwężamy to jeszcze raz no i gdy
element będzie już zbyt mały to on się schowa i
teoretycznie będzie się go dało za pomocą tej lupy otworzyć
i w tym momencie i na youtubie i u nas na
tym breakpoint'cie element jest ukryty nasze elementy są
wypozycjonowane mniejwięcej tak samo jak rozszerzymy
ten breakpoint to na obu widokach
mamy już ten input zobaczymy tylko
jeszcze jaka to jest faktycznie wysokość tego
inputa 25 pikseli plus border ja mam tutaj 30 pikseli zamiast
40 na tym wrapperze żebyśmy nie mieli aż takiego rozjazdu no
i okej możemy tutaj jeszcze zaokrąglić zarówno
search
input border top
left radius ustawimy na 3 piksele i
border bottom left radius też na 3 piksele może
nawet na 5 i
trigger tak samo tylko że z prawej strony zaokrąglamy
no i mamy całkiem w
porządku wyglądający layout przypomina on tego youtuba oczywiście nie
jest pixel perfect natomiast nie to było
naszym w tym ćwiczeniu my chcieliśmy tylko coś
co wygląda mniej więcej jak pasek nawigacyjny youtube
zachowuje się mniej więcej tak samo jak on
ja jeszcze tylko aby
ten element nam się jeszcze troszkę wyróżniał ustawię jakiś
background dla body i dla
site-nav'a background na
biały ewentualne
dodatki pokroju stworzenie tej klawiatury
w search barze pozostawiam tobie a w tej lekcji to wszystko
zapraszam cię do następnej gdzie będziemy kodowali nagłówek
naszego kanału na youtubie