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 jak już przygotowaliśmy nasz markup zaczniemy go powoli sterować natomiast zanim
do tego przejdziemy stwórzmy faktycznie dla naszego
obrazka i naszego avatara później odpowiedni placeholder
czyli dalej korzystamy z tego linku placeholded tylko tutaj
możemy zmienić kolor i treść powiedzmy że damy tutaj
super channel tutaj
damy kolor tła na sześć
696e9e okej
to nie jest kolor tła tylko tu jest kolor tła no i tutaj damy
background na biały czyli cztery czyli
sześć f no i rozmiar powiedzmy to już możemy go
wziąć sobie z youtube 728 x 127
ten obrazek na youtube jest o wiele większy natomiast na potrzeby tego przykładu
skorzystamy z takich jak tutaj nam div powiedziały 782 127
czyli tutaj
782 127 okej
mamy już nasz hero section no i tutaj jest
taki problem ponieważ w tym miejscu nie mamy alt'a ta
treść może być wrzucona przez użytkownika w dowolny sposób i
może tam wstawić co chce więc ja bym tutaj dla bezpieczeństwa wstawił pustego alt'a
który oznacza że dany element jest po prostu dekoracją
i nie ma jakiegoś semantycznego znaczenia tutaj
możemy jeszcze w tym fake youtube zmienić to na fake
yt żeby się to nam lepiej mieściło zmienimy
sobie tą nawigację no i został jeszcze avatar no to
analogicznie już tutaj zrobimy do tego superchannel'a tylko
zmienimy mu rozmiary na jakieś logiczne powiedzmy 100 na
100 i
zostawiamy nazwy superchannel stworzymy i zalinkujemy nowy
plik css do naszego arkusza czyli tak jak tutaj linkowaliśmy flexa
zalinkujemy sobie header
css plik tworzymy
header css
możemy w tym momencie faktycznie przejść już do tego stylowania naszego
markup'u ten channel header hero on tutaj się nie mieści do
końca ja się w sumie tego spodziewałem ale zróbmy że channel header
hero będzie miał zawsze width
100% no i teraz możemy przejść do faktycznie stylowania
tej trudnej części tego menu zróbmy
sobie tutaj color picker'em kolor tła tego header'a
i od razu ustawiamy sobie channel header
backround color na
taki jak skopiowaliśmy zobaczmy czy faktycznie to zadziałało i
zacznijmy może od zrobienia zakodowania
naszego przykładu w ten sposób aby ta część ze szczegółami dotyczącymi kanału
zachowała się mniej więcej responsywnie tak jak faktyczny youtube jak
rozciągniemy to sobie troszkę bardziej to widzimy że dalej z tej strony jest taki sam
odstęp w tym momencie jest to około 100 pikseli gdy
zmniejszymy sobie to to na którymś breakpoint'cie powiedzmy
że na 705 ten avatar nam się pojawia poniżej
705 tego avatara tu nie ma oczywiście rozmiar czcionki
też się zmienia a na mobile dalej pozostaje
około 100 pikseli od lewej
odstępu zarówno od tego
avatara jak i od strony głównej jak widzimy tutaj dopiero ten button
się zaczyna więc ja domyślam się że on jest na równi z tym stworzony czyli
możemy zrobić sobie tutaj channel header ustawić
padding-left na 100 pikseli tylko
że musimy to zrobić na naszych details
oraz na naszym pasku
nawigacyjnym wewnątrz tego headera zobaczmy jak to wygląda okej
mamy to wcięcie możemy zaokrąglić awatar czyli channel
header avatar border
radius 50 procent cofnijmy
się i zobaczmy jak wygląda nasz markup częścią
wspólną dla całej tej sekcji jest header details jest to rodzic
tych wszystkich elementów więc na tym elemencie będziemy dawać faktycznego flexboxa
przejdźmy sobie tutaj i na channel
details ustawiamy display flex
odstęp z prawej strony w sumie też możemy zrobić
czyli tutaj skorzystamy z shorthandu padding padding 0
100 pikseli czyli z góry i z dołu mamy zero padding'u
natomiast z lewej i z prawej 100% teraz na channel header
info zobaczmy czy dobrze trafiłem klasę channel
header wrapper ok ustalamy
display flex tylko że ustawimy mu flex-direction
na column na details ustawimy
align-items center od
razu na channel header name ustawimy
mniej więcej taki sam font-size jak jest tam czyli
to jest 24 piksele roboto font size
24 piksele wydaje mi się że font-weight jest
ustawiony też na 400 nie wiem jaka to jest wartość więc ja wstawię
tutaj no powiedzmy 400 zobaczymy jak to wygląda oraz
subskrypcje mają kolor 60 60 60
i font-size 40 czyli channel header
subs count font size 14 pikseli color
60 60 60 tutaj
jest jakiś odstęp acha bo tutaj jeszcze mamy
nie zresetowane style na tej liście oczywiście zobaczymy jakie są odstępy pomiędzy
tymi elementami i jak ona się faktycznie tutaj zachowują czyli tu
pomiędzy awatarem jest
około 25 pikseli tutaj powiedzmy że jest jakieś 5 pikseli
powiedzmy że też jest jakieś 5 10 pikseli
czy to się będzie jakoś mocno różnić na innych rozdzielczościach
dalej to jest 25 pikseli tutaj te elementy są dociągnięte
do prawej no i tutaj margines pozostał bez zmian czyli teraz
wracamy na nasz kod i ustawmy
na troszkę to pomniejszymy na tym wrapperze albo
jeszcze lepiej na avatarze margin-right 25 pikseli
więc mamy już tą sztywną szerokość w tym miejscu
no i teraz na tym button'ie czyli channel
header subscribe tak
to jest subscribe ustawimy margin-left na auto
on został dociągnięty do prawej strony ponieważ ma automatyczny
margines z lewej strony no i ustawimy mu margin-right
powiedzmy na te 10 pikseli zobaczmy
jaki jest tutaj font-size 14 rgba
17 17 17 jest opacity więc zróbmy to
tak że font-size jeszcze
raz sprawdźmy 14
rgba czyli 14 color rgba
17 17 17 0.6 i
tutaj jeszcze background-color eee
okej tuo odznaczamy jest okej zobaczmy jaki rozmiar
jest tutaj paddingu wchodzimy w computed sprawdzamy
sobie padding padding-bottom
10 padding left right 16 no
to ustawmy padding 10
pikseli 16 pikseli cofamy
się ten tekst jest jeszcze uppercase'owany
więc robimy text-transform uppercase
i zrobimy font-weight na 40
również sprawdzamy zostawmy
to w tym momencie tak jak jest no i ustawmy jeszcze adekwatny
rozmiar dlatego do tego jest 24 piksele na 24 piksele
więc na naszym channel header
bell ustawimy font-size 24 piksele
jest ok tutaj jeszcze dalej mamy ten zły
kolor bo tutaj youtube ma kolor 90 90 90
a my mamy tutaj czerń więc zrobimy sobie kolor
90 90 90 no i w sumie zaktualizujmy może
też te nasze nawigacje
tylko teraz tutaj jest po ikonce muszę
sobie przypomnieć jakiej tutaj klasy użyliśmy
po prostu stylowaliśmy po fa więc fa wszystkie
fa mają mieć kolor dokładnie taki no
i okej jest coraz bardziej to podobne do prawdziwego youtube zrobiliśmy
przy okazji maleńką poprawkę do wcześniejszego kodu i na
tym etapie przerwiemy w kolejnej lekcji będziemy dalej kontynuować
kodowanie tego headera