Ostatnia aktualizacja: 

Mobile first - widok mobilny messenger: Flexbox

W tym praktycznym ćwiczeniu stworzymy widok mobilny aplikacji czatu - messenger. Wykorzystamy do tego CSS Flexbox oraz ikony SVG.

CSS Flexbox
Mobile First
HTML
CSS
Responsive Web Design
24m 09s
1+ wyświetleń
1+ pozytywnych reakcji
1+ komentarzy

Widok mobilny - mobile first

Zobacz jak w prosty sposób stworzyć layout aplikacji czatu - wzorowany na Messangerze.

Transkrypt wideo

Cześć w tym wideo zakodujemy widok mobilny komunikatora

więc w tej lekcji będziemy tworzyli layout komunikatora który będzie podobny do messengera, będzie wzorowany na messengerze, tak jak widzicie będziemy próbowali ten tutaj interfejs przetransformować na naszą stronę internetową

więc to o czym musimy zawsze pamiętać tworząc nasze responsywne strony internetowe jest to ten znacznik meta o nazwie "viewport", bez niego nasze media queries mogą nie działać no i generalnie praca z naszymi stronami www będzie o wiele trudniejsza

więc zaczniemy od tego dolnego panelu, czyli tutaj tej sekcji czaty, osoby
i relacje, no i stworzymy po prostu listę nienumerowaną o klasie "main-nav", więc każdy z naszych elementów listy nienumerowanej będzie składał się z obrazka oraz tekstu

więc na początku może zacznijmy od tekstu, czyli mamy tutaj czaty
osoby oraz relacje no i oczywiście będziemy potrzebowali tutaj takich właśnie ikonek

ja nie będę ich wycinał oczywiście z samej aplikacji messengera i
jest taka strona "glyphs.fyi", którą też możecie
znaleźć oczywiście w narzędziach deweloperskich na stronie "koduje.pl",

ale ja ją otworzę sobie w pełnym ekranie i tutaj wpiszemy "comment" i jak
widzimy mamy tutaj ikonkę która jest bardzo podobna do tej
właśnie facebookowej i możemy tutaj w tym miejscu po prostu
skopiować sobie nasz kod svg, więc ja zrobię właśnie to i tutaj nad naszym tekstem czaty, wkleję naszego svg-ka

no i oczywiście analogicznie możemy pobrać sobie pozostałe elementy czyli tutaj te osoby oraz relacje, więc ja tutaj wpiszę sobie "person"
i faktycznie widzimy tutaj jest jedna osoba tutaj są dwie osoby więc może skopiujemy sobie ten element, nad osobami wklejamy

no i ostatnie no są to relacje więc tutaj akurat nie możemy wpisać "relation" bo to nam niestety tego nie wyszuka, ale możemy wpisać
na przykład "copy", więc faktycznie gdy skopiujemy sobie to ponownie no to będziemy mieli już naszą trzecią ikonkę

więc przejdźmy do naszego pliku "style.css"
i ustawmy jakiś podstawowy styl na tym naszym ".main-nav"
więc ".main-nav" będzie miało "list-style-type"
ustawione na "none", "margin: 0" "padding: 0", czyli resetujemy po prostu domyślne stylowanie każdej ul-ki, tych ul-ek będziemy mieć więcej więc ja po prostu ostyluje to w ten sposób

więc to co zrobimy to wykorzystamy sobie do tego flexboxa, więc
po wpisaniu "display: flex" widzimy że te elementy już są ustawione
w jednej linii, możemy użyć sobie tutaj "position: fixed"
tak aby ta lista była zawsze w tym samym miejscu, materiał o pozycjonowaniu absolutnym też znajdziesz na kanale, "bottom: 0" i faktycznie w momencie gdy będziemy mieć tutaj treść ta lista zawsze będzie przyklejona do samego dołu

no i teraz na flexie możemy ustawić tutaj "justify-content"
ustawiony na "space-evenly", czyli w tej linii flexa domyślnej, czyli tutaj jest to linia pozioma nasze elementy wewnątrz niej będą ustawiały się w taki sposób, aby odstępy między nimi były równe, natomiast powinniśmy jeszcze tutaj ustawić sobie "width: 100%", tutaj ustawimy sobie
".main-nav li" ustawione również na "display: flex", z tym że zmienimy sobie "flex-direction" na "column" i w tym elemencie
mamy zagnieżdżonego flexa, czyli to jest to element wypozycjonowany na flexie, ale pojedyncze elementy "li" również są pozycjonowane na flexie, z tym że ich kierunek jest inny bo pozycjonujemy to w osi y
czyli w osi pionowej, w kolumnach,

więc teraz możemy sobie wycentrować ten tekst "justify-content"
"center" oraz "align-content" "center" wewnątrz naszego main-nava
nasze svg-ki, też ograniczymy do pewnych rozmiarów czyli "max-width" powiedzmy "40px", "max-height: 40px"
no i w tym momencie widzimy że te elementy już pasują do siebie nieco lepiej i teraz "align-content" ustawimy sobie na "align-items"
"center" i w tym momencie faktycznie te elementy są wyrównane
więc to co moglibyśmy zrobić aby zmienić kolor tych ikonek to na
naszym svg, który jest wewnątrz main-nava, ustawić kolor
ścieżki - czyli patha, na powiedzmy biały

tutaj zmieniamy to za pomocą właściwości "fill", możemy zmienić to na dowolny kolor czyli na przykład jeżeli wpiszemy sobie tutaj "#fff", będzie to kolor biały jeżeli zmienimy to na przykład na "red", no to
będzie to kolor czerwony i stylowanie w ten sposób
jest możliwe tylko dlatego że zawarliśmy nasze pliki svg wewnątrz naszego kodu źródłowego i jesteśmy w stanie dobrać się do tych znaczników za pomocą selektorów css-owych, więc zostawmy sobie ten nasz "main-nav" chwilowo i przejdźmy do naszego top-nava, czyli do tej
sekcji nawigacyjnej którą widzimy tutaj

jest tutaj nasz awatar obecnego użytkownika, nazwa obecnej karty
aktywowanej przez właśnie tutaj te odnośniki oraz przycisk do tworzenia
nowego posta, oczywiście to nie będą rzeczy interaktywne, w tym konkretnym wideo, jeżeli będziecie
chcieli abyśmy stworzyli z tego prawdziwą aplikację czatu, dajcie znać w komentarzu

więc ja tutaj sobie stworzę analogicznie "ul" "top-nav", będą tutaj trzy elementy listy no i w pierwszej będziemy mieli awatar
on oczywiście może być obrazkiem, nasz tekst
który reprezentuje aktywną kartę oraz przycisk który reprezentuje
new post i możemy wrócić sobie do naszego "glyphs.fyi"
i spróbować wpisać "write", no i widzimy że udało
się znaleźć ikonkę która byłaby podobna do tego co faktycznie
potrzebujemy, czyli tutaj możemy po prostu sobie ją wstawić i

przejdziemy z powrotem do naszego stylowania i analogicznie do tego co zrobiliśmy tak naprawdę tutaj na naszym top-navie
ustawimy sobie "display: flex" i te elementy będą ustawione
już w jednej linii, nasze selektory do svg tak naprawdę możemy
ujednolicić, tak aby te selektory działały na wszystkie svg-ki na naszej
stronie, nie ma z tym najmniejszego problemu, chyba że chcielibyśmy zmienić kolor tego właśnie przycisku na jakiś błękitny, to wtedy możemy to sobie po prostu nadpisać w taki sposób że na top-navie
wszystkie ścieżki będą miały kolor no powiedzmy jakiś "aqua", możemy go sobie tutaj z color pickera zmienić na jakiś taki bardziej delikatny
błękitny, powiedzmy na coś takiego

i to co musimy zrobić to oczywiście wyrównać te elementy tak aby były równe w osi przeciwległej do głównej osi flexa, czyli tutaj mamy domyślne
ustawienie "flex-direction: row", czyli jest to oś pozioma
więc w osi pionowej musimy wyrównać te elementy, w związku z czym
"align-items" ustawiam na "center" i "justify-content" na "space-between" tym razem i widzimy że faktycznie ta ikonka jest w prawym górnym rogu
ekranu, po lewej stronie będziemy mieli nasz awatar no i oczywiście możemy dodać tutaj jakiś "padding", powiedzmy 20px
albo nawet 10px, zmniejszymy go troszkę

no i może ustawmy ten awatar aby był poprawnym obrazkiem czyli zamiast tutaj diva ustawimy sobie obrazek o sourcie "koduje.png"
czyli tutaj ja po prostu zawarłem logo koduje, które
oczywiście też będziemy musieli ostylować, tak aby ładnie się wyświetlało
usuwamy zamykającego diva i teraz w naszym top-navie
ustawimy że awatar powinien mieć szerokość powiedzmy 20px
i wysokość również 20px, w związku z czym wszystkie obrazki muszą być kwadratem ponieważ ich "aspect-ratio" w przeciwnym wypadku zostanie naruszony, możemy to troszkę zwiększyć powiedzmy do 40px i teraz każdy awatar, niezależnie od tego gdzie będzie umieszczony naszej stronie, będzie miał "border-radius: 50%"

i w tym momencie mamy faktycznie ładnie zaokrąglony obrazek, który reprezentuje nasz awatar użytkownika, cały nasz top-bar może mieć
"font-weight" ustawiony na "bold", no i analogicznie chcielibyśmy aby
ten element był przyklejony do górnej części ekranu, w związku z czym możemy tutaj ustawić "position: fixed",
"top: 0", "width: 100%" i aby pozbyć się tutaj tego marginesu box model
czyli "box-sizing" był ustawiony na "border-box" i w tym momencie
wewnątrz tego naszego "width: 100%", zawarta jest też szerokość paddingu, materiał o box model też znajdziesz na kanale

no i przejdźmy do tworzenia faktycznej treści którą będziemy scrollować, w momencie gdy będziemy korzystali z naszej aplikacji w związku z czym przejdziemy sobie do naszego pliku "index.html" możemy zawinąć te svg-ki, tak aby nam nie przeszkadzały albo całe listy, też nie ma z tym najmniejszego problemu aby je po prostu tutaj
zwinąć i w tym miejscu stworzymy sobie
"content-wrapper"

tutaj stworzymy najpierw inputa do wyszukiwania konwersacji w naszej aplikacji, no i stworzymy tutaj dwie sekcje, jedna będzie scrollowalna
w osi poziomej, a druga będzie scrollowalna
w osi pionowej

więc zacznijmy od naszego inputa, będzie to input o typie
"search", ponieważ faktycznie będzie służył on do wyszukiwania
treści na naszej stronie i klasę nadajmy mu powiedzmy
"conversation-search" i ustawimy mu
"placeholder" również na "search"

jak widzimy ten element już nam się tutaj pokazał, tylko
że jako że wypozycjonowaliśmy ten "top-bar" na "fixed",
no to on oczywiście będzie przysłaniał nam tego searcha, gdy
ustawimy mu jakiś "background-color", więc to co można
zrobić to albo zmienić sobie tutaj "positon: fixed", na "position: sticky"

i w momencie kiedy tej treści będzie więcej to oczywiście ten
element zostanie przyklejony do górnej części ekranu, a w przeciwnym wypadku zachowuje się normalnie jak element blokowy, no i oczywiście
będziemy musieli też ostylować ten nasz ".conversation-search",
który jest inputem, więc zostawimy mu "border"
na "none", "padding" powiedzmy na
"10px", kolor tła ustawimy mu na jakiś szary
więc użyjemy tutaj notacji rgb, no i jeżeli użyjemy trzech takich samych wartości będzie to jakiś odcień szarości jeżeli gdzieś w połowie damy
czyli z 255 wpisujemy 100, no to ten kolor będzie takim troszkę ciemniejszym szarym, no i możemy oczywiście zmienić
kolor naszego placeholdera, w taki sposób że
na naszym ""conversation-search" użyjemy pseudoelementu
"placeholder" i ustawimy mu kolor na biały

i w momencie gdy zaokrąglimy sobie ten "border-radius"
na powiedzmy znowu "20px", no to widzimy
że ten search już nam się ładnie zaokrąglił
no i możemy też ostylować cały nasz "content-wrapper"
w taki sposób, aby miał on również równy "padding" temu paddingowi, który ustawiliśmy na naszym top-barze no i nasz "content-wrapper" też możemy wypozycjonować na flexie, czyli "display: flex",
"flex-direction: column" i w tym momencie domyślnie "align-items" jest ustawiony na "stretch", w związku z czym w momencie zmiany kierunku osi flexa, wszystkie elementy będą rozciągane w kierunku "cross axis" i jako że ustawiliśmy "flex-direction" na "column" czyli elementy są ustawiane tutaj w tej osi pionowej

co prawda mam tutaj tylko jeden element na ten moment ale jako że elementy układane są tutaj w pionie to "align-items" ustawione
na "stretch" domyślnie będzie rozciągało nam te elementy w szerokości
no i przejdźmy do stworzenia listy naszych
konwersacji czyli ponownie będzie to lista nie numerowana
o klasie conversations wewnątrz tej listy będziemy mieli pojedyncze elementy li wewnątrz których będziemy mieli obrazki ponownie o klasie ".avatar" i ustawimy im "src" od razu na jakiś obrazek i ja tutaj chciałbym zaproponować takie rozwiązanie że jako że ten tekst będziemy generowali za pomocą emmeta to możemy wykorzystać sobie takie api do pobierania przykładowych placeholderowych obrazków czyli
picsum.photo, no i tutaj jest taka składnia że możemy podać jako identyfikator danego obrazka liczbę porządkową i ta liczba porządkowa
może właśnie przychodzić z pętli emmetowych więc jeżeli wstawimy sobie tutaj dolara który reprezentuje obecną iteracji pętli w emmecie, oczywiście o emmecie też mogę zrobić osobny materiał jeżeli będzie na to zapotrzebowanie, no to tutaj będziemy mieli inne obrazki i zaraz zobaczycie jaki będzie tego efekt

no i obok tego obrazka stworzymy sobie tylko diva wewnątrz
którego będą dwa spany pierwszy z nich będzie miał wartość
"Chat user" i będzie reprezentował nazwę naszego użytkownika
oraz druga to będzie po prostu "Message"
czyli treść wiadomości no i chcielibyśmy aby takich elementów
listy było dwadzieścia więc ja ten pseudo markup przerobię
teraz na składnie emmeta i zrobię to w ten sposób że po prostu
jako że chcemy mieć dwadzieścia takich li o takiej treści
to ja tutaj wstawię nawias otwierający i nawias zamykający następnie
ustawie że wewnątrz tego diva powinny być dwa elementy
obok siebie czyli tutaj składnia plusikiem
obok tego img również powinien być ten div w związku z czym jak usunę tutaj te białe znaki wstawię plusika i analogicznie
pozbędę się białych znaków między elementami
listy a naszym obrazkiem i teraz gdy pozbędziemy się ostatnich białych znaków i przemnożymy sobie cały ten markup powiedzmy razy dwadzieścia oczywiście ja to sobie skopiuję żebyśmy nie musieli tego pisać ponowniei nacisnę taba to zobaczymy że wygenerowały nam się różne zdjęcia w takim markupie jaki poprosiliśmy

czyli mamy element listy wewnątrz którego jest bezpośrednio obrazek i tutaj jak widzisz ten id jest inny w zależności od tego która to jest lista no i diva według którego mamy informacje o naszym użytkowniku więc to co
możemy teraz zrobić to po prostu przejść sobie do naszego css-a i na naszym conversations ponownie ustawić
"display: flex", "flex-direction" na "column"
i widzimy że te elementy są już ustawione
pionowo i teraz gdy zaczniemy scrollować to faktycznie ten top-bar
nam się przykleił oraz główna dolna nawigacja też została
u dołu tylko nie mają żadnego tła w związku z czym ustawmy im może tło takie jakie jest na samym naszym "background"
albo możemy je troszkę zmienić na jaśniejsze czyli top-nav
oraz main-nav będą miały "background: black" no i oczywiście
możemy color pickerem troszkę zmienić tą wartość
powiedzmy na taki troszkę jaśniejszy
odcień czerni no i na naszym main-nav na górze
może też ustawmy jeszcze jakiś padding
powiedzmy te dziesięć pikseli

no i "box-sizing: border-box", i w momencie gdy teraz się scrollujemy to faktycznie widzimy że te elementy zostały
na wierzchu no i nasza treść jest scrollowalna
więc wracając do naszego conversations
czyli tutaj tej listy wewnątrz której mamy te wszystkie elementy
możemy ustawić takie style że "conversations-avatar"
będzie miał szerokość siedemdziesięciu
pikseli ".conversations li" będą również pozycjonowane
na flexie tylko ustawimy im margin bottom powiedzmy
na dwadzieścia pikseli i w tym momencie mamy ładne odstępy pomiędzy naszymi użytkownikami czatu no i "conversations li"

tutaj ten nasz separator oczywiście
mógłby mieć klasę natomiast ja tam nie ustawiłem tego na tym
divie, więc możemy to tak naprawdę cofnąć i zmienić sobie tego diva na po prostu klasę ".message-wrapper"
i ponownie dwadzieścia więc te wszystkie
nasze diwy będą teraz miały klasę message-wrapper więc możemy to ostylować bezpośrednio w ten sposób i "display"
ponownie "flex" z tym że "flex-direction"
ustawiona kolumn i te elementy są faktycznie wy pozycjonowane
wzdłuż osi pionowej "justify-content" możemy ustawić na center no i może na naszym avatarze "margin-right" również na dwadzieścia pikseli
i widzimy że nasz czat faktycznie wygląda już całkiem nieźle
to co możemy zrobić to jeszcze troszkę go ulepszyć czyli poprawić tutaj
te odstępy dodać tą sekcję wyróżnionych
kontaktów i stworzenie sekcji wyróżnionych kontaktów będzie tak naprawdę bardzo proste bo możemy wykorzystać dokładnie tego samego emmeta

ja go sobie tutaj nawet wykomentuję żebyśmy mieli go pod ręką
i zmienić po prostu klasę naszego ul conversations na ul conversations
featured i możemy tak naprawdę pozbyć się też
tego wrappera wiadomości ponieważ tutaj widzimy że nie ma
treści wiadomości jest tylko nazwa użytkownika i pozbywamy się treści
wiadomości ponownie dwadzieścia elementów
więc "conversations.featured"
będzie sterowane praktycznie tak samo jak conversations z tym że
flex direction ustawimy na row
conversations featured li ustawimy na flex direction
column i aby zapobiec temu wychodzeniu naszego elementu poza
nasz viewport możemy ustawić na conversations featured
overflow na scroll i w tym momencie mamy ładną
listę nawigacyjną scrollowalną w prawo

więc poprawmy tylko marginesy między naszym inputem czyli
conversations search margin bottom dwadzieścia pikseli conversations featured avatar również powiedzmy margin bottom na dziesięć pikseli no i ogólnie conversations też mogą mieć swój margines
margin bottom dwadzieścia pikseli i w tym momencie
widzimy że te elementy są już ładnie scrollowalne
oraz mamy listę zarówno w pionie jak i w poziomie więc, to co możemy jeszcze zrobić to dodać taki efekt który tutaj jest widoczny
podczas scrollowania widzimy że tutaj pod tym naszym tekstem
czaty jest taki bardzo subtelny prześwit tego
jakie elementy są widoczne pod spodem i możemy do tego
wykorzystać prostą właściwość css ową ona jeszcze nie jest wspierana świetnie we wszystkich przeglądarkach ale tam gdzie zadziała będzie to troszkę lepsze experience a
tam gdzie nie będziemy mieli klasyczne experience bez przeźroczystości w związku z czym
jest to zgodne z duchem idei progressive enhancement o którym też materiał znajdziesz na kanale

więc zarówno na naszym top-nav
i main-nav możemy ustawić sobie backdrop
filter i tutaj jako wartość możemy
podać różne filtry na przykład blur i tutaj po podaniu trzydziestu pikseli powiedzmy zobaczysz że ten element jeżeli zrobimy go troszkę bardziej
przeźroczystym powiedzmy na połowę będzie miał dokładnie taki efekt tutaj czylimy scrollując widzimy rozmytą
treść która znajduje się za tym czatem w związku z czym jest to naprawdę
dobre pod kątem user experience ponieważ użytkownik wie że coś
jest pod tym paskiem nawigacyjnym i dalej może scrollować

no i oczywiście przydałoby się zrobić tutaj taki margines bezpieczeństwa aby ten pasek nawigacyjny nigdy nie przysłaniał nam żadnej konwersacji w związku z czym na naszym content wrapperze możemy
ustawić padding bottom równy wysokości
tego elementu czyli w dev-toolsach jak sobie sprawdzimy jest to
około osiemdziesięciu pikseli więc po prostu wpiszmy tutaj padding
bottom osiemdziesiąt pikseli i w tym momencie gdy będziemy scrollowali się to zobaczymy że ten element nigdy
nie będzie przysłaniał naszej treści która jest zawarta
w naszej wyszukiwarce konwersacji no i oczywiście możemy tutaj ostylować rzeczy typu kolor tekstu, outline
czyli conversation search color możemy ustawić
na czarny albo biały zobaczymy co będzie lepiej wyglądało
prawdopodobnie biały outline color możemy ustawić na jakiś kolor
błękitny możemy go pobrać w sumie z tego elementu który
reprezentuje nam dodawanie nowej konwersacji czyli przy svg-ku
tutaj był gdzieś nasz fill ustawiony na właśnie taki kolor
morski więc wracając tutaj w ten outline color
możemy go ustawić na dokładnie taką wartość i w tym momencie mamy ładne podświetlenie outline-u, oczywiście tego outline nie powinniśmy ukrywać ponieważ jest to duży problem w kontekście dostępności

jeżeli chodzi o kontynuację tego przykładu no to tak naprawdę powinniśmy stworzyć z tego odpowiednie linki
tak aby one też były focusowalne z klawiatury oczywiście w tym momencie te elementynie są w ogóle interaktywne no i tak samo tutaj te sekcje czaty osoby i relacje również powinniśmy stworzyć jako linki moglibyśmy

tutaj idąc dalej stworzyć sobie właśnie zaznaczenie obecnej
karty na kolor niebieski jeżeli będzie zainteresowanie to ja z chęcią ten przykład przerobię tak aby był w pełni interaktywny

tworzenie stron internetowych w taki sposób jak widzicie ja tutaj wykorzystałem sobie viewport z iphone se, tworzenie stron mobile first bez żadnych mediach queries ma też taki plus że w momencie gdy zmienimy sobie viewport

tej naszej przeglądarki na szerokość czy wysokość
to tak naprawdę ten widget czatu zawsze wygląda dobrze
w tej sytuacji nie jest to zależne zupełnie od tego jaki mamy rozmiar przeglądarki

a i tak treści które będą prezentowane na naszym czacie będą
wyświetlane poprawnie w związku z czym obsługa większych
viewportów może sprowadzać się tylko i wyłącznie do pokazywania dodatkowych elementów bądź rearanżowania kolejności
ich przedstawiania.

[blooper]
gdzie moglibyśmy jeszczetona... blrlrlblrlbrl
oknami myją teraz? boże, co to się dzieje
pewnie będę widział zaraz człowieka który mi będzie tańczył
przed oknem no
[gra motyw mission impossible]

Kliknij by pominąć tę sekcję

Sprawdź swoją wiedzę w quizie CSS Flexbox!

Pytanie 1 / 2

Którą właściwością zmienisz kierunek renderowania elementów?

Zobacz wyniki
arrow_forward
{ "lead": "Sprawdź swoją wiedzę w quizie CSS Flexbox!", "quiz": [{ "question": "Którą właściwością zmienisz kierunek renderowania elementów?", "options": [{ "value": "display", "correct": false }, { "value": "flex-direction", "correct": true }, { "value": "justify-content", "correct": false }, { "value": "align-items", "correct": false } ] }, { "question": "Które właściwości/właściwości służą do wyrównania elementów wobec osi flexa?", "options": [{ "value": "align-items", "correct": true }, { "value": "justify-content", "correct": true }, { "value": "display", "correct": false }, { "value": "align-items", "correct": true } ] } ] }

Zobacz kod źródłowy

Nie mam nic do ukrycia! Eksperymentuj z moimi przykładami :) 

Wsparcie CSS Flexbox według CanIUSE

Korzystaj śmiało! Chyba, że martwisz się starszymi wersjami IE (nie powinieneś ;) )

Data on support for the mdn-css__properties__flex feature across the major browsers

Wsparcie Backdrop filter według CanIUSE

Ostrożnie! Nie działa na Firefox i IE.

Data on support for the css-backdrop-filter feature across the major browsers from caniuse.com

23 maja 2022

Komentarz od autora

Flexbox jest dobrze wspierany od wielu lat - jego wsparcie było już dobre w 2017! Na tym etapie, jeśli nie musisz wspierać starych systemów bankowych czy lotniczych, nie myślę że nie musisz przejmować się jego wsparciem. Jest to fundament tworzenia responsywnych stron internetowych.

Poznaj Wojtka

Cześć! Nazywam się Wojciech Połowniak i jestem programistą Fullstack z zacięciem do tworzenia jakościowych materiałów szkoleniowych.

Uwielbiam automatyzację, VR oraz interaktywne sposoby przekazywania wiedzy. Tematy takie jak UX, dostępność czy devops również nie są mi obce.

Jestem też organizatorem meet.js oraz Techspeakerem pod banderą Mozilli... A to jeszcze nie wszystko.

Chcesz więcej?

Nie ma sprawy! Koduje to długie godziny darmowej treści dostępnej na wyciągnięcie ręki.

Newsletter

Jeśli chcesz być na bieżąco z najnowszymi inicjatywami od twórców koduje? Zapisz się na newsletter - nie spamujemy!

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

W przyszłości, możemy udostępnić Ci informacje o dodatkowych kursach naszego autorstwa.

Najczęściej zadawane pytania

Jaka tematyka jest poruszana na Koduje?
expand_more
Mówimy o HTML, CSS i JavaScript - zarówno na backendzie, jak i frontendzie. Tematyka taka jak Devops, architektura i infrastruktura oprogramowania również pojawią się na kanale!
Czy mogę zaproponować temat kolejnych wideo?
expand_more
Oczywiście, że tak! Najlepiej sugerować materiały w sekcji komentarzy na YouTube 
Jak to możliwe, że Koduje jest darmowe? 
expand_more
Moją pasją jest dzielenie się wiedzą w sposób zrozumiały i klarowny, jednocześnie interaktwny i angażujący. Tworząc materiały, utrwalam też własną wiedzę. Wierzę, że za to widzowie nie powinni płacić
W sieci można znaleźć strony przypominające do koduje.pl, o co chodzi?
expand_more
Niestety, na przełomie lat wiele osób próbowało podszyć się pod Koduje i wykorzystać nasze materiały do promocji własnych kanałów dystrybucyjnych.  Jeśli masz wątpliwości, czy dana strona współpracuje z Koduje - daj nam o tym znać. Nie pochwalamy piractwa, plagiatu ani szarej strefy prawa autorskiego.
Czy prowadzicie szkolenia indywidualne?
expand_more
W chwili obecnej, niestety nie. Na przełomie lat prowadziłem kursantów przez ich przygodę z programowaniem, z czego każdy otrzymał pracę jako programista. Jeśli jesteś zainteresowany lekcjami indywidualnymi, zapraszam do kontaktu mailowego.
Czy oferujecie płatne kursy?
expand_more
W przyszłości nie wykluczamy możliwości tworzenia dedykowanych kursów o danych zagadnieniach. Zapisz się na nasz newsletter, aby być na bieżąco z naszymi najnowszymi płatnymi materiałami.
Jak mogę się z wami skontaktować?
expand_more
Czytamy komentarze na YouTube! Śmiało możesz zadać pytanie na dowolny temat pod którymkolwiek z naszych wideo. Poza tym możesz skontaktować się z nami mailowo bądź poprzez fanpage na Facebooku
Obecnym właścicielem marki jest Wojciech Połowniak. Zobacz zakładkę o nas!