Laboratorium HTML+JS – Zadania praktyczne

Poniżej znajduje się 10 zadań laboratoryjnych z zakresu programowania w HTML i JavaScript. Każde zadanie jest zaprojektowane tak, aby zajmowało około 25-30 minut wykonania. Zadania obejmują różne tematy poznane na wykładzie, od podstaw tworzenia stron HTML, przez manipulację DOM i obsługę formularzy, aż po zaawansowane przetwarzanie danych i interaktywne aplikacje webowe.

Zadanie 1: Interaktywny formularz kontaktowy

Cel: Stwórz stronę HTML z formularzem kontaktowym zawierającym walidację po stronie klienta.
Scenariusz: Pracujesz jako frontend developer w agencji interaktywnej. Klient zamówił formularz kontaktowy na stronę firmową. Formularz powinien zawierać pola: imię (wymagane, min 2 znaki), email (wymagany, poprawny format), telefon (opcjonalny, format polski), wiadomość (wymagana, min 10 znaków). Po wysłaniu formularza wyświetl komunikat potwierdzający lub błędy walidacji bez przeładowania strony. Użyj wbudowanej walidacji HTML5 oraz dodatkowej walidacji JavaScript.
Wskazówki do wykonania:

Zadanie 2: Dynamiczna galeria obrazów

Cel: Stwórz stronę z dynamiczną galerią obrazów z funkcją filtrowania i lightboxem.
Scenariusz: Tworzysz stronę portfolio dla fotografa. Potrzebujesz galerii zdjęć z możliwością filtrowania według kategorii (przyroda, krajobrazy, portrety) oraz funkcją podglądu (lightbox) po kliknięciu w miniaturę. Dane obrazów (src, alt, kategoria) mają być przechowywane w tablicy obiektów JavaScript, a galeria generowana dynamicznie. Kliknięcie w miniaturę otwiera powiększony obraz w overlayu. Uruchom stronę i przetestuj filtrowanie oraz lightbox.
Wskazówki do wykonania:

Zadanie 3: Todo list z użyciem localStorage

Cel: Stwórz aplikację Todo list z trwałym zapisem danych w localStorage.
Scenariusz: Budujesz osobistą aplikację do zarządzania zadaniami. Aplikacja powinna mieć pole tekstowe do wpisywania nowego zadania, listę wyświetlającą wszystkie zadania z możliwością oznaczania jako ukończone, przycisk usuwania, licznik zadań do zrobienia i opcję filtrowania (wszystkie/ukończone/do ukończenia). Zadania mają być zapisywane w localStorage, aby przetrwały przeładowanie strony. Po odświeżeniu strony lista ma być automatycznie wypełniana z localStorage. Uruchom aplikację i przetestuj dodawanie, oznaczanie i usuwanie zadań.
Wskazówki do wykonania:

Zadanie 4: Kalkulator BMI z wykresem

Cel: Stwórz kalkulator BMI z interpretacją wyniku i prostym wizualnym wskaźnikiem.
Scenariusz: Projektujesz moduł wellness na stronę fitness. Kalkulator przyjmuje wagę (kg) i wzrost (cm), oblicza BMI według wzoru: waga / (wzrost/100)^2. Następnie interpretuje wynik: niedowaga (<18.5), prawidłowa (18.5-24.9), nadwaga (25-29.9), otyłość (>=30). Wyświetl wynik z dokładnością do jednego miejsca po przecinku oraz kategorię z odpowiednim kolorem (zielony/niebieski/pomarańczowy/czerwony). Dodaj prosty wizualny wskaźnik (pasek postępu lub wskaźnik na skali). Uruchom kalkulator i przetestuj różne wartości.
Wskazówki do wykonania:

Zadanie 5: Modal logowania z animacją

Cel: Stwórz modal logowania z efektami animacji CSS i walidacją.
Scenariusz: Implementujesz system logowania dla aplikacji webowej. Na stronie głównej znajduje się przycisk "Zaloguj", który otwiera modal z formularzem logowania. Modal zawiera pola: login lub email, hasło, oraz checkbox "Zapamiętaj mnie". Po kliknięciu "Zaloguj" walidujesz czy pola nie są puste, a następnie wyświetlasz symulowany komunikat "Logowanie..." przez 2 sekundy (używając setTimeout), po czym wyświetlasz sukces lub błąd. Modal ma płynną animację wejścia i wyjścia (fade + slide). Uruchom i przetestuj otwieranie, zamykanie (X, Escape, kliknięcie poza modalem) i walidację.
Wskazówki do wykonania:

Zadanie 6: Tabela z sortowaniem i wyszukiwaniem

Cel: Stwórz tabelę danych z funkcją sortowania kolumn i wyszukiwania tekstowego.
Scenariusz: Budujesz panel administratora z tabelą użytkowników. Tabela zawiera dane: ID, Imię, Nazwisko, Email, Rola (Admin/Editor/Viewer), Status (Aktywny/Nieaktywny). Dane są w tablicy obiektów JavaScript. Nad tabelą jest pole wyszukiwania, które filtruje wiersze w czasie rzeczywistym. Nagłówki kolumn są klikalne i sortują tabelę rosnąco/malejąco (użyj icon rotate przy drugim kliknięciu). Dodaj wiersz z informacją o liczbie wyników. Uruchom i przetestuj wyszukiwanie i sortowanie.
Wskazówki do wykonania:

Zadanie 7: Zegar światowy ze strefami czasowymi

Cel: Stwórz stronę wyświetlającą zegar dla wybranych stref czasowych.
Scenariusz: Projektujesz stronę dla firmy działającej globalnie. Strona wyświetla zegar dla 4 stref czasowych: Warszawa (Europe/Warsaw), Nowy Jork (America/New_York), Tokio (Asia/Tokyo), Sydney (Australia/Sydney). Dla każdej strefy wyświetl: miasto, aktualną godzinę (HH:MM:SS), datę i dzień tygodnia. Godziny aktualizują się co sekundę (użyj setInterval). Dodaj funkcję aktualizacji czasu co minute (zmiana wyświetlania co 60 sekund, ale zegar nadal tyka). Użyj obiektu Intl.DateTimeFormat do formatowania. Uruchom i obserwuj aktualizację zegara.
Wskazówki do wykonania:

Zadanie 8: Quiz interaktywny z punktacją

Cel: Stwórz interaktywny quiz z pytaniami, odpowiedziami i systemem punktacji.
Scenariusz: Tworzysz quiz wiedzy o HTML i JavaScript na stronę edukacyjną. Quiz zawiera 5 pytań z 4 odpowiedziami (tylko jedna poprawna). Po wyborze odpowiedzi podświetl ją na zielono (poprawna) lub czerwono (błędna) i wyświetl komunikat. Po 1 sekundzie przejdź do następnego pytania. Na końcu wyświetl podsumowanie: liczbę punktów (1 punkt za poprawną odpowiedź), procent poprawnych i komunikat (np. "Świetnie! 80%"). Dodaj przycisk "Zagraj ponownie". Pytania mają być w tablicy obiektów. Uruchom quiz i odpowiedz na wszystkie pytania.
Wskazówki do wykonania:

Zadanie 9: Sklep - koszyk zakupowy

Cel: Stwórz prosty koszyk zakupowy z dodawaniem, usuwaniem i podsumowaniem.
Scenariusz: Budujesz prosty sklep internetowy. Strona wyświetla listę produktów z cenami (tablica obiektów: nazwa, cena). Każdy produkt ma przycisk "Dodaj do koszyka". Koszyk wyświetla dodane produkty z ilością (jeśli dodano kilka razy, zwiększ ilość), ceną i przyciskiem usuwania. Pod koszykiem: suma do zapłaty (cena * ilość dla każdego produktu). Dodaj funkcję "Wyczyść koszyk", która usuwa wszystko. Użyj localStorage do zapamiętania koszyka. Uruchom i przetestuj dodawanie, zwiększanie ilości, usuwanie produktów.
Wskazówki do wykonania:

Zadanie 10: Notatnik z kolorowaniem składni

Cel: Stwórz prosty edytor tekstowy z podświetlaniem składni JavaScript.
Scenariusz: Tworzysz narzędzie do nauki JavaScript dla początkujących. Edytor to pole textarea, w którym użytkownik wpisuje kod JavaScript. Pod textarea jest przycisk "Uruchom", który wykonuje kod używając eval() i wyświetla wynik (lub błąd) w sekcji wyników. Dodaj podstawowe kolorowanie słów kluczowych: var/let/const (niebieski), function (różowy), string (zielony), komentarz // (szary), liczby (pomarańczowy). Kolorowanie ma działać po wpisaniu tekstu (nasłuch input). Uruchom edytor i przetestuj kolorowanie i wykonanie kodu.
Wskazówki do wykonania:

Przykładowe rozwiązania

Skrypty HTML/JS/PHP