od Podstaw
9 godz. 20 min · JavaScript · Full-stack i Programowanie
Piotr PalarzWeb DeveloperJavaScript to język programowania, który napędza niemal wszystkie strony internetowe. Dopełnia on technologie HTML i CSS, za pomocą których tworzymy strukturę i wygląd dokumentu. Co jednak w sytuacji, gdy chcemy po kliknięciu w wybrany przycisk wyświetlić powiększone zdjęcie lub wczytać dodatkowe dane z serwera? To właśnie w takich sytuacjach przydaje się język JavaScript i tzw. DOM API, dostępne w przeglądarce. Jak się przekonasz, możliwości nowoczesnych przeglądarek w połączeniu z tym językiem są naprawdę ogromne.
Język JavaScript może być używany nie tylko na stronach internetowych. Z tego powodu, w kursie omówimy najpierw najważniejsze konstrukcje tego języka, które są niezależne od platformy uruchomieniowej. Dzięki temu zbudujesz fundamenty niezbędne do tego, by wykorzystać ten język np. w środowisku Node.js. Krok po kroku omówimy sposoby tworzenia zmiennych, dostępne typy danych i operatory. Następnie zobaczysz jak tworzyć tablice i obiekty, z jakich instrukcji warunkowych i pętli możesz korzystać, a także jak tworzyć własne funkcje. Przekazywana wiedza uwzględniać będzie nowości, które pojawiły się w języku wraz z rewolucyjnym standardem EcmaScript 6 (ES6).
Sam język JavaScript to nie wszystko, by tchnąć ducha w strony internetowe. Z tego powodu, przeglądarki internetowe udostępniają tzw. DOM API. To interfejs, który z użyciem języka JavaScript pozwala na manipulację treścią i wyglądem strony. W kursie bardzo dokładnie omówimy czym jest Obiektowy Model Dokumentu, a także jak z nim pracować. Zobaczysz jak tworzyć nowe elementy HTML i wstawiać je na stronę, jak modyfikować ich treść, atrybuty, style czy klasy CSS. Poznasz sposoby na odczytywanie położenia elementu na stronie i jego wymiarów, które będą niezbędne w wielu sytuacjach. Dowiesz się także, jak przypisywać obsługę zdarzeń w przeglądarce, by np. wywołać własną funkcję, gdy ktoś kliknie w wybrany przez Ciebie przycisk.
JSON to popularny format wymiany danych, a Ajax to potoczna nazwa dla asynchronicznych zapytań HTTP, które wysyłać możemy z poziomu kodu JavaScript. Dziś niemal każda strona internetowa wykorzystuje te technologie. W niektórych przypadkach jako dopełnienie podstawowej funkcjonalności witryny, a w innych jako główny motor napędzający stronę. Jeśli kiedykolwiek widziałeś, jak na stronie internetowej jakaś treść "doczytuje" się np. podczas przewijania - widziałeś w praktyce Ajax. W jednym z rozdziałów kursu zobaczysz, jak pracować z tym formatem, a także jak wysyłać wspomniane zapytania do serwera.
Choć kurs który masz przed sobą, jest kursem dla początkujących, to aby zrozumieć jak działa język JavaScript i jak z nim się współcześnie pracuje, omówimy dwa ważne tematy - zarządzanie zależnościami i bundlowanie kodu. Dowiesz się czym jest npm i jak z jego pomocą pobierać paczki gotowego kodu z internetu, a także jak sprawić, by bez trudnu dołączać je do własnego kodu. W tym celu skorzystamy z narzędzia snowpack, które pozwoli nam także na optymalizację kodu przed jego wypuszczeniem w świat. Na tym etapie omówimy również jak działają moduły ESM, pozwalające dzielić kod na mniejsze części.
Kurs podzielony został na możliwie krótkie lekcje, do których w każdej chwili możesz wrócić. Jeśli zatem zapomnisz jak odczytywać wymiary elementu na stronie, szybko odnajdziesz odpowiednią lekcję. Czym jednak była by sama teoria i proste przykłady, bez pokazania, jak połączyć je w całość i wykorzystać w praktyce? Dobra wiadomość jest taka, że w kursie stworzymy aż 5 praktycznych projektów, wykorzystujących zdobytą wcześniej wiedzę. Najpierw napiszemy program losujący Dużego Lotka, następnie dynamiczny pasek postępu przeczytania artykułu, dymek pojawiający się nad elementem po najechaniu na niego myszą, wygenerujemy tabelkę w użytkownikami na podstawie danych JSON, a na koniec tworzymy prosty odtwarzacz wideo, z możliwością pauzowania i przewijania filmu.
Kurs ten jest dla wszystkich osób, które znają już podstawy HTML i CSS i chciałyby przejść poziom wyżej i dodać do swoich stron dynamiczności. Żadna wcześniejsza wiedza z zakresu JavaScript nie jest wymagana, ale zalecana jest podstawowa wiedza z zakresu samego programowania (czym są zmienne, pętle, funkcje itd.). Materiał ten będzie również świetnym odświeżeniem i usystematyzowaniem wiedzy dla osób, które już z tym językiem miały do czynienia. Po przerobieniu tego kursu będziesz gotowy, by poznawać język JavaScript dalej i zacząć korzystać z nowoczesnych frameworków.
Teraz rzucimy okiem na to, jak możemy
odczytywać pozycję suwaków. I zauważ, że zrobiłem tutaj taki element, który jest
przewijalny, czyli ma więcej treści niż się mieści, więc możemy przewijać w prawo
i w lewo, a także góra dół. I jeżeli przewiniemy taki suwak to
chcielibyśmy odczytać ile od góry tutaj jest przewinięte
i podobnie jeżeli chodzi o ten suwak.
I zanim to zrobimy powiem Ci kiedy to się
może okazać przydatne. Szczególnie w przypadku elementu body.
Jeżeli trochę body przescrollujemy tak jak
Ci wcześniej pokazałem i za pomocą getBoundingClientRect
np. odczytamy górną krawędź tego elementu, wiemy ile ona jest od góry względem tej
krawędzi, ale jeżeli trochę przescrollujemy to już nie wiemy ile jest względem góry
całego dokumentu, a czasami może to być przydatne. Więc wtedy możemy do tej
wartości dodać sobie jeszcze scrollTop, czyli ile od góry jest przescrollowane body.
Na razie to trochę abstrakcyjny przykład,
ale jeszcze prawdopodobnie w tym kursie z niego skorzystamy.
Niemniej jednak chciałbym, żeby była taka osobna lekcja, do której będziesz mógł
wrócić i zobaczyć w jaki sposób te rzeczy odczytywać.
Więc w przypadku tego boxa właśnie pomarańczowego
będziemy chcieli w konsoli odczytać ile jest przescrollowane od góry i robimy to za
pomocą scrollTop i ile jest przescrollowane od lewej strony.
Robimy to za pomocą właściwości scrollLeft.
Zauważ pokazuje nam od razu 0.
Natomiast jeśli bym trochę przescrollował
i teraz nie odświeżając odwołał się do tego elementu,
pod dolar 0 będziemy mieli do niego referencję i zrobimy to samo,
scrollTop, zauważ 36 scrollLeft 84.
I co ciekawe, ta właściwość nie jest
właściwością tylko do odczytu, ale także możemy ją przypisywać.
Więc jeżeli przypiszemy scroll top np.
na 50 to treść nam się przewinie.
Być może to zauważyłeś.
Podobnie możemy zrobić ze scrollLeft.
Czyli to są wartości, które również można ustawiać.
Na koniec pokażę Ci jeszcze, że możemy sobie przewijać dokument do dowolnego momentu,
tylko żeby nam to zadziałało musimy sobie zrobić body, które będzie znacznie wyższe.
Może sobie tutaj liniowo to przypiszemy, czyli zrobimy tutaj height np. 2000 pikseli.
Wtedy to będzie przewijalne.
Możemy w konsoli odwołać się do window i podobnie oczywiście w naszym kodzie i scrollTo.
Tutaj podajemy x, y, czyli ile chcemy
przesunąć suwak gdyby był oczywiście horyzontalny i wertykalny, więc
horyzontalny chcemy ustawić na 0, a wertykalny np. na 100.
Podajemy tutaj wartości typu number, nie żadne piksele, bo wtedy musielibyśmy podać
string, ale to by nie zadziałało, więc po prostu podajemy number i zauważ, że okno
zostało przescrollowane właśnie do takiego momentu.
Możemy również skorzystać z windows.scrollBy
i znowu mamy tutaj x, y więc nie chcę ruszać suwaka poziomego,
a suwak pionowy chcę przesunąć o -100 pikseli, czyli o tyle przesunąć do góry.
Zauważ, że w ten sposób nam to
przeskoczyło. I to jest właśnie często wykorzystywane
przez biblioteki, które pozwalają płynnie przewijać,
dlatego, że tam w bardzo małych odstępach czasowych jest przewijane np.
5 pikseli i znowu 5 pikseli do góry itd.
I to tak wydaje się, że płynnie nam przewija.
Jeżeli zatem kiedykolwiek będziesz potrzebował odczytać, jaka jest pozycja
suwaka, czyli ile jest przescrollowane w danym elemencie, możesz to zrobić za
pomocą właściwości, które Ci pokazałem, czyli scrollTop i scrollLeft.
A tutaj dodam jeszcze to co przed momentem Ci pokazałem czyli scrollTo 0 i np.
200 od góry i zrobimy scrollBy 0 i tutaj -100 również aby zostawić to
w plikach źródłowych dla późniejszego wglądu.