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ę bardzo serdecznie w kolejnej lekcji z kursu flexbox
od podstaw i faktycznie teraz przejdziemy do stylowania wcześniej przygotowanego markup'u
do głównej sekcji z wideo w naszym
fake youtubie czyli na video section czyli
na tym elemencie ustawimy background
na biały no i oczywiście jako że tutaj
te elementy są białego koloru prawdopodobnie dlatego że
linki stylowaliśmy na biało gdzieś na naszej stronie
na dole robią się niewidzialne więc może od razu na video
section link ustawimy
kolor na czarny okej może
nie na video section link zobaczymy na czym ten kolor jest faktycznie ustawiony color
color white jest ustawiony w base css
na wszystkich odnośnikach więc to powinno zadziałać tylko
to nie jest video section link prawdopodobnie video
link okej video link
no i teraz oczywiście widać ten tekst konkretnego
wideo no i jak już widzimy całą naszą strukturę
strony no to zaczniemy ją stylować oczywiście na flex'ie czyli
zamykamy tutaj wtedy te devtools'y i na video section
nav ustawimy display flex zobaczymy
jakie tutaj są paddingi na tym elemencie nie
one są nie są ustawione bezpośrednio
na tym elemencie mamy troszkę inną strukturę markup'u powiedzmy
że 16 pixeli z lewej i z prawej strony to
będzie cały padding dla video section czyli padding
ustawimy na zero
16 pikseli a no i zobaczmy jakiś font-size jeszcze na tych
elementach 16 pikseli kolor 111 tutaj
14 pikseli kolor 60 60 60 i tak samo 14
60 60 60 czyli tak
naprawdę powinniśmy nasze wideo label
jakoś rozróżnić czyli
video section label
czyli te elementy acha
tutaj zrobiłem błąd w markup'ie czyli chciałem ustawić tutaj klasę
na tych label'ach a ustawiłem niepoprawne dla
atrybutu for po spacji kolejną wartość więc
w tym momencie oczywiście będziemy mogli za pomocą klasy stargetować ten
element no i podejrzewam że tutaj też ten problem występuje
więc od razu go tutaj też naprawiamy i
możemy od razu rozróżnić te dwa elementy nazwijmy
je sobie label primary i label secondary
żeby
mieć jakiekolwiek ich rozróżnienie a szczerze
mówiąc nie jestem pewien dlaczego na youtubie one są inaczej ostylowane no po prostu
pewnie jest jakiś tam powód albo może tak było im wygodnie tak komponenty
mają stworzone więc teraz label primary stylujemy
na wcześniej wspomniany kolor 111 font-size
na 11 pikseli bardzo
mały się wydaje 16 pikseli nie
11 czyli ustawiamy 16 pikseli no
i na label secondary
ustawiamy kolor 60 60 60 font-size 14
i text-transform na uppercase tutaj
jest jeszcze ten button play all i on ma w sumie mieć takie same style jak ten uploaded
videos więc może po przecinku zrobimy video
section play all okej
i on ma teraz takie same style tylko że paddingi
nie ma paddingów okej to pewnie dlatego że mamy
tutaj za dużo elementów i tutaj nie mamy żadnego flex wrap'a więc te elementy
się ściśniają w tej dostępnej przestrzeni która jest im
dostarczona a my oczywiście tych selectów tutaj nie będziemy pokazywali
to można obrać javascriptem żeby stworzyć takie
nie natywne selecty to są jednocześnie dostępne i wyglądają
tak jak chcemy więc my
tylko po prostu je ukryjemy czyli video
section zobaczmy klasę okej
one są osobno nazwane czyli video section sort i
video section filter
ostylujemy osobno i damy im display w tym momencie
na none i oczywiście
używając js oraz odpowiednich atrybutów area można
sprawić żeby nie natywne selecty również były dostępne i
wyglądały w porządku natomiast na tym etapie zostawiamy to tak jest no
i tutaj jeszcze ustawimy justify-content na space-between
i mamy już mniej więcej jakiś
tam układ tych elementów oczywiście musimy ustawić im jeszcze odpowiednią wysokość
i może nadać odpowiednie ikony z
font-awesome więc zobaczmy może jak duże
są te elementy one mają padding 10 16 pikseli więc za chwilę
to ustawimy i ogólnie te elementy mają 36 pikseli
wysokości więc ustawiamy na video
section label primary video
section play all i video section label
secondary wysokość
na 36 pikseli padding na 10 pikseli
16 pikseli no i teraz jest
to już jakkolwiek podobne tutaj one mają jeszcze jakiś
odstęp od tego menu
górnego no możemy strzelić że to jest powiedzmy też
to 16 pikseli czyli ustawimy sobie że video section będzie miało
16 pikseli paddingu z każdej strony no i
uzupełnijmy te ikonki czyli
dla upload videos ustawimy jeszcze spana o
klasie fas
fa tutaj powiedzmy że to będzie jakiś
triangle czyli triangle okej
caret left więc pewnie będzie caret down
wpisujemy sprawdzamy i
faktycznie jest tutaj ten caret down tylko ja go wstawiłem na upload videos to
drugie tutaj musimy oczywiście ten label zmienić czyli uploaded
videos tutaj wychodzi nam caret i tutaj jest sort
by jako druga wartość czyli tutaj zamiast uploaded
videos powinno być sort by i
drugim elementem który tutaj mamy pewnie byłoby jakaś lista
albo
sort albo
align okej powiedzmy że align
left jest czymś co jest
wystarczająco podobne do tego o co nam chodzi nie jest to oczywiście ta ikonka
natomiast ona jest wystarczająco podobna więc align
right okej
no i oczywiście tutaj powinniśmy dać align left żeby było zgodne z designem
i wstawić to przed ten tekst który nam reprezentuje tą ikonkę
czyli w tym momencie wygląda to już jakkolwiek podobnie do tego co
mamy na youtubie i moglibyśmy tutaj jeszcze tak naprawdę za
tym labelem secondary video
section label
secondary na fas ustawić
jeszcze margin-right powiedzmy na 5
pikseli albo na 8 pikseli żeby był po prostu
jakikolwiek odstęp między tym tekstem
a ikonką którą właśnie ustawiliśmy zanim przejdziemy
do stylowania faktycznie pojedynczego elementu video
to może naprawmy ten my channel zobaczmy jaka
tu jest klasa channel header details czyli wchodzimy
sobie w ten element header
zobaczmy channel header details
i tam na dole robiliśmy media queries i na takim
mniejszym breakpoint'cie powiedzmy że gdzieś
w okolicach no 500 powiedzmy
że 550 czyli max
width ustawimy na 550
ustalimy że channel header details
będą miały padding jakieś
tam mniejsze no powiedzmy nawet do 16 pikseli więc
teraz jak będziemy mieli większy breakpoint
no to oczywiście ten padding po bokach będzie większy natomiast przy mniejszym breakpoint'cie
ten tekst na pewno nam się będzie mieścił podobnie
do tego jak jest na youtubie tutaj nie ma żadnego paddingu ale my go już zostawimy tak
jak jest u nas ponieważ wydaje mi się że wygląda to nawet lepiej tego
odstępu nie będziemy fix'ować tak też jest na youtubie zwłaszcza że tutaj ma
być to miejsce na element na ewentualny element jeśli
będziemy przescroll'owani w prawo więc to tyle w tej lekcji w kolejnej lekcji zajmiemy
się stylowaniem pojedynczej karty wideo