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 już lekcji z kursu flexbox od podstaw
i faktycznie przejdziemy do kodowania tego paska nawigacyjnego youtube mniej
więcej żeby on był po prostu podobny nie musi być pixel perfect wręcz
przeciwnie chodzi o to żeby po prostu dobrze wyglądał
na większości rozdzielczości tych które faktycznie youtube też wspiera a każdy
dobry layout trzeba zacząć faktycznie od markup'u więc my
zaczniemy od tego że zdefiniujemy co jest na tym pasku i
będziemy tworzyć odpowiednią strukturę w naszym kodzie html czyli jest tutaj jakiś hamburger
który po kliknięciu otwiera nam menu boczne jest logo serwisu jest
import do którego przyklejony jest przycisk który ten input wywołuje
no i są jakieś akcje typu dodaj video aplikację
wiadomości powiadomienia no i jakieś tam akcje powiązane z samym
użytkownikiem w formie naszego avatara zobaczymy tylko
jak to się będzie zachowywać w rwd jak widzimy ta szukajka
ona się tutaj kurczy odstępy pomiędzy elementami są
takie same niezależnie od break point'a no
jak będziemy zjeżdżać to to ten element
formularza wyszukiwarka zniknie ten
button zmieni swój wygląd na bardziej ikonkowy no
i po kliknięciu można z powrotem odnieść się do tego pola
formularza wyszukiwarki tak naprawdę to mógłby być
osobna ikonka która będzie tylko na mniejszej rozdzielczości pokazywana
i chyba tak to zrobimy no ale przejdźmy do faktycznego kodowania tego markup'u więc
zaczniemy od stworzenia znacznika nav jako że to jest sekcja nawigacyjna
następnie stworzymy przycisk
który będzie naszym hamburgerem
od razu nadawajmy klasy tym elementom czyli całą nawigację nazwiemy
site-nav no i button mógłby nazywać się
site-nav menu trigger
powiedzmy nazywamy tutaj w zależności od przeznaczenia
item'u a nie tego jak wygląda dlatego nie hamburger bo faktycznie
to jest element który uruchamia to menu boczne przechodząc
dalej tutaj mamy element który jest jednocześnie odnośnikiem do strony
głównej więc możemy zamknąć to w h1 h jedynka powinna być
tylko jedna na stronę ta h jedynka może być też
linkiem i w tym linku będzie obrazek
my tutaj nie będziemy brali faktycznego loga youtube wykorzystamy do tego
taki serwis jak placeholded i generalnie
idea jest taka że to jest serwis który udostępnia nam obrazki
takie jak chcemy w zależności od tego jaki damy tutaj w restrowych parametrach
payload czyli jeśli chcielibyśmy mieć obrazek sto na sto to
możemy wpisać to w pierwszym payloadzie ale jeśli chcemy mieć kolor tła taki
szarawy to wpisujemy jako kolejne rest parameter kolor o który nam chodzi
tutaj jest kolor tekstu i tutaj jest treść tekstu który chcemy zobaczyć ja
tutaj od razu piszę alt'a i nazwiemy to fake youtube
nie piszemy że to jest logo fake youtube zostawimy to w tej
formie i zobaczymy może jak teraz wygląda ten nasz markup tutaj
oczywiście nie ma jeszcze tej naszej ikonki hamburgera za chwilę będziemy je dodawać
natomiast customize'ujmy to może troszkę czyli zmieńmy
wymiary tego naszego logo zobaczymy jakie logo
ma ten tutaj youtube 80 x 24
dobra więc to zmieniamy 24 bo pierwsza jest rozdzielczość na
80 zmienimy kolor tła na jakieś czerwone czyli
ff to są dwa pierwsze digity odpowiadające
za kolor czerwony w formacie heksadecymalnym no i pozostałe zostawiamy
na 0 ponieważ chodzi nam o czerwone tło no i kolor tekstu możemy
ustawić na ffffff i to będzie kolor biały jako
tekst wstawimy sobie fake youtube
powiedzmy że bez spacji zapisujemy zobaczymy jak to wygląda
już w podglądzie brackets'a tutaj było widać on
jest jakiś duży a to powinno być odwrotnie oczywiście 80 na 24
okej no i teraz zobaczymy jak to
tam wygląda jest fake youtube nie jest to najładniejsze logo ale to
jest fake youtube no i lecimy dalej następnie będzie
ten input z przyciskiem do wyszukiwania faktycznych
filmów my go możemy zamknąć we wrapper ponieważ te dwa elementy są
ze sobą tak jakby połączone więc zamkniemy go we wrapper i
tutaj od razu uaktualnimy brakujące klasy czyli site nav powiedzmy
logo wrapper możemy tutaj nazwać
ten element jako site nav logo
link i tutaj site
nav logo img powiedzmy
że to jest okej no i teraz stworzymy sobie div'a
o klasie site nav search wrapper
i
wewnętrz niego musimy umieścić input o typie search
ponieważ to jest faktycznie wyszukiwajka a nie zwykłe pole tekstowe
nadamy mu klasę site nav search
input zamykamy już się pojawił kolejny
element na naszej stronie tworzymy
button o typie button mógłby
być też typ submit na razie zostawimy to w tej formie to i tak nie będzie faktycznie
działający formularz więc nazwiemy go po klasie site
nav search trigger i
tutaj oczywiście będziemy musieli dać odpowiednie logo tak samo i wrócimy
zobaczymy co tam jeszcze nam brakuje pozostałe to jest są już ta lista
z akcjami które
użytkownik może podjąć więc my stworzymy z tego listę nawigacją nienumerowaną
czyli url class site nav
user actions bezpośrednim
dzieckiem ul bądź ol mogą być tylko li pamiętajcie
o tym żadne div'y czy
paragrafy czy cokolwiek innego nie jest poprawnym znacznikiem
wewnątrz znacznika ul bądź ol no i ten pojedynczy
element możemy też nazwać site nav user action
czyli liczby pojedynczej no i każda z tych akcji będzie miała w sobie
button o klasie site nav powiedzmy
action trigger teraz
po prostu skopiujemy te elementy listy
tyle razy ile to będzie potrzebne czyli dodajemy jeszcze
cztery li z button'em
piąty li to będzie ten button
który będzie faktycznym awatarem użytkownika więc możemy dodamy
po prostu modyfikator is user avatar
okej jeszcze tylko zerknijmy
jak to będzie wyglądało na mobilce czy trzeba dopisać tutaj ten button
szukaj prawdopodobnie do listy numerowanej i
tutaj powinien być jeszcze element wstecz który nam się cofnie z tego widoku więc
dodajmy jako pierwszy element który będzie celował w css schowany jest
na większych break-point'ach i
nazwiemy go sobie is mobile search
trigger i
wewnątrz tego wrappera też możemy zrobić jeszcze jeden button i
tutaj dajemy mu oczywiście klasę site nav
search back powiedzmy
no dobrze więc teraz gdy spojrzymy w podgląd
naszej strony www no to oczywiście nie ma tutaj żadnej treści i wygląda
to paskudnie więc jedyne co jeszcze teraz zrobimy to wykorzystamy font awesome
i wpiszemy we wszystkie button'y odpowiednie ikonki oraz
może uzupełnimy ten placeholder w tym button'ie żeby faktycznie było
wiadomo że to jest wyszukiwarka więc ja
korzystam tutaj z wersji font awesome 5.71 i w przeciwieństwie do
takiej popularnej metody będę korzystał ze znaczników span do
ustawiania ikonek ponieważ znacznik i ma inne semantycznie znaczenie
jest to też napisane w dokumentacji font awesome że jeśli ktoś chce być poprawny
semantycznie może używać spanów zamiast znacznika i w
nowej wersji font awesome ikonki nie są już prefiksowane przez fa
tylko w zależności od tego czy jest to brand czy jest to zwykły kształt
jest to albo fas bądź fab my będziemy korzystali
z podstawowych kształtów nie z brandów więc będzie to prefiks
fas no i jeśli chcemy w tym momencie dodać
ikonkę hamburgera do naszego site nav menu trigger
to możemy wpisać tutaj fa bars
i jak widać tutaj na podglądzie już ta ikonka istnieje
więc ja szybko uzupełnię pozostałe ikonki skopiujemy
sobie tego spana tutaj
powiedzmy że jest arrow left okej zgadłem
tutaj dodajemy placeholder z naszego inputa
placeholder search w search triggerze
zobaczymy czy jest ikonka search jest ikonka search no
i pozostałe elementy to jest również ikonka search
w tym momencie bo to jest ten element który będzie na mniejszych
break-pointach pokazywany na większych będzie ukrywany i
tutaj sobie muszę przypomnieć w jakiej to było kolejnści te ikonki więc pierwsze to
jest jakaś kamera drugie to jest jakiś grid wiadomości i notyfikacje
kamera grid notyfikacje zobaczymy kamera okej
to jest bardziej aparat to może video tutaj
mamy grid nie mam
pojęcia jak tego szukać więc możecie skorzystać z takiej fajnej strony
od samego font awesome gdzie możecie szukać konkretnych
nazw ikon czyli my tutaj wpiszemy grid i zobaczmy
czy jest coś takiego faktycznie th czyli
tak jakby table headers no okej nie wnikam taka nazwa więc
generalnie na stronie font awesome to jest taka wyszukiwarka nazw ikon zobaczmy
co tutaj dalej było to były chyba wiadomości ja
wiem że to są bubble tutaj było
notifications notification powiedzmy
że w liczbie mnogiej i user avatar nie będzie miał ikonki bo to zrobimy
po prostu na pseudo elementach jako css'owe kółko z
wypełnieniem zobaczmy jak to w tym momencie wygląda nie
ma notification a to może bell okej
jest bell nie bell to może comment okej
i w tym momencie mamy faktycznie
w miarę semantyczny kod i dzięki
temu że używamy flexa ten kod będzie mógł pozostać w tej formie bo nie będziemy
potrzebować dodatkowych div'ów żeby coś zwrappować tutaj wyjątkiem dla naszej
wygody ja stworzyłem ten search wrapper natomiast pozostałe
elementy ładnie będą się wyrównywały nawet bez tych dodatkowych elementów
w markup'ie więc to wszystko w tej lekcji dzięki za uwagę i w kolejnej
lekcji przejdziemy do faktycznego stylowania tych elementów które właśnie stworzyliśmy