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 zajmiemy się stylowaniem pojedynczej karty wideo więc
pierwszą rzeczą którą tutaj widzimy jest to że to jest element listy
więc on dalej ma ten punktor ponieważ nie mamy żadnego normalize'a czy css reset'a
więc ustawiamy na video section list
czyli tym elemencie na całej liście list-style-type
na none ustawiamy padding na 0
margin na 0 i teraz
na pojedynczym video czyli
nawet nie na pojedynczym list-item'ie tylko
na samym odnośniku video linku możemy ustawić
display flex czyli ustawiamy tutaj display
flex no i ustawmy że każda karta
ma określoną wysokość i szerokość
czyli sprawdzamy sobie tutaj jak duży
jest ten element 210 na 117 niech
będzie tak zostawiamy to czyli
ustawiamy width 210
pikseli height 117 pikseli i
ten rozmiar nie będziemy aplikowali co prawda na samym linku tylko na thumbnail'u
więc to przeniesiemy ustawimy video section
thumbnail
ustawimy mu taką konkretną szerokość
i wysokość flex-direction możemy ustawić na można by to
zrobić na kolumnie w sumie wygląda to całkiem nieźle więc może zostawmy to
na kolumnie tylko ustawmy żeby
jednak cała karta miała te 270 pikseli
a
thumbnail miał po prostu width 100% no i na tym
thumbnailu ustawimy background image
na url faktycznie taki jak korzystaliśmy z
z placeholdit'ów i tutaj wkleimy
sobie nasz obrazek tylko musimy
oczywiście zmienić mu rozmiary na adekwatne czyli 210 na
117 kolor mu też
zmienimy na 696e9e
tekst zostawimy jaki jest tylko zmienimy jego treść
na awesome tutorial okej
spacje tutaj nam nie przejdą zróbmy po prostu
awesome tutorial w ten sposób i mamy już kartę
naszego video plus minus oczywiście teraz musimy ostylować
czas ten button żeby to się odpowiednio pozycjonowało wewnątrz thumbnail'a
i potem jak będziemy mieć więcej tych elementów to
odpowiednio je układać na różnych breakpoint'ach więc
zarówno video link jak i thumbnail będą pozycjonowane na flexie
czyli ustawiamy display flex justify-content
również możemy ustalić na column i
wewnątrz tego thumbnail'a znajdują się dwa elementy thumbnail
ale jest to button i ten span ten span
pokolorujemy oczywiście zgodnie z designem youtube czyli rozmiary
minimalne tego elementu to będzie
powiedzmy te 40 na 16 pikseli background
ustawimy na czarne z opacity 0.8 więc
po kolei już to róbmy od razu czyli total
time to będzie min width 40
pikseli min height
po prostu 16 pikseli kolor oczywiście biały
background to będzie rgba
czarne czarne czarne 0.8 przeźroczystości
i zobaczmy czy tu jest
jeszcze jakiś od razu tu widać margines 4 piksele margin'u
2 piksele paddingu z góry i z dołu i cztery po bokach więc też to aplikujemy od razu
margin 4 piksele padding
2 piksele 4 zobaczmy jak to wygląda u nas
okej i jeszcze font-size oczywiście trzeba zmienić jaki
tu jest font-size 12 pikseli roboto czyli font-size
12 pikseli możemy to od razu zaokrąglić
border radius 2 piksele line-height
równy size aby na pewno było
wycentrowane no i powiedzmy że text-align
center żeby to też na pewno było na środku moglibyśmy to zrobić oczywiście
na flexie i nie na line-height i text-align ale też nie ma sensu wrzucać
wszędzie flexa jeśli na przykład operujemy tylko na tekście więc
skoro mamy już taki layout no to może ustawmy align
items na flex-end tylko
że w tym momencie elementy dociągnęły nam się do
końca kolumny co jest dziwne bo main axis jest
tak jakby ustawiona na row tutaj a
no tak justify-content na column nie ma to sensu flex-direction
na column no i teraz będzie nam o wiele łatwiej align
items flex-end aby przeklnąć to na koniec osi
cross axis no i żeby wypozycjonować
elementy wzdłuż osi main axis na środku to
teraz użyjemy justify-content-center albo
nawet space-between i
to wygląda już całkiem nieźle tylko że po pierwsze ten button
powinien mieć inny kolor i rozmiary ale przede wszystkim on
się nam powinien pokazywać tylko na hoverze więc może to zróbmy teraz
video section watch
later czyli
ten element powinien mieć domyślnie display
none ale tylko gdy mamy video
section video link hover
na tym elemencie no
to on się powinien display blokować
czemu ten element dalej jest widoczny zobaczmy zmniejszymy
to sobie troszkę display
on ma ustawionego inline-block'a przez font awesome i
font awesome nam wygrywa tutaj w stylowaniu możemy
to rozwiązać na zasadzie takiej że po prostu ten
font awesome wstawimy tutaj jako spana okej
w tym momencie tego już oczywiście tutaj nie ma i teraz po hoverze
ten element się pokazuje ale przez to że domyślnie czyli
jak nie najedziemy myszką na dany element jest
tylko jedno dziecko wewnątrz tego thumbnail'a
no to ono nam leci do góry więc możemy to rozwiązać troszkę inaczej
ustawiając na total time
jeszcze dodatkowo margin-top auto teraz
niezależnie czy jest tam ten element czy nie ma on zawsze będzie
na dole zobaczmy jak powinien wyglądać button
on ma też 4
piksele paddingu kolor ma biały background
ma 1111
no i font-size ma na 10 pikseli
zobaczymy co z tego wyjdzie przeskoczmy na nasz
layout i ustawmy mu margin
4 piksele font-size 10
pikseli zobaczmy co z tego będzie kolor na white background na 111
okej
najedźmy myszką i wygląda to nieźle tylko tam no
ta ikonka jest mniejsza więc może tutaj
może zróbmy tak że jeszcze
raz tutaj sprawdźmy to jest 24 piksele na 24 piksele to
tak też wpiszemy tutaj width powiedzmy
25 pikseli razem z tym paddingiem height 25 pikseli
tutaj ustawiamy font-size powiedzmy no
to jest większość tego buttona dodajemy 20 pikseli zobaczmy jak to będzie wyglądać troszkę
za duże więc na 18 jest
lepiej no i oczywiście tak samo border-radius
2 piksele żeby było spójne z tym tutaj i może
mu zróbmy jeszcze jakieś tam opacity domyślne żeby nie był aż taki
brutalny i takie samo opacity też
ustawimy na tym czasie może troszkę
zbyt brutalne na 0.9
no i teraz po najechaniu myszką na dany element oczywiście się pojawia
nam ten button moglibyśmy
tutaj dodać te odpowiednie js'y bądź linki
w zależności od tego co chcielibyśmy żeby ten button faktycznie robił i
dalszą część tej karty video będziemy stylowali w kolejnej lekcji
z tego kursu także dziękuję ci bardzo za uwagę i
do zobaczenia wkrótce