MODUŁ 10
Style CSS, klasy, zakładki i filtry
PPrezentacja dla nauczyciela
Nowoczesne strony internetowe dynamicznie reagują na działania użytkownika poprzez zmianę wyglądu, ukrywanie zbędnych sekcji i przełączanie paneli informacyjnych. W tym module dowiesz się, jak kontrolować style CSS za pomocą JavaScript, tworzyć interaktywne zakładki oraz stosować filtry graficzne.
Modyfikacja stylów inline i właściwości style
Każdy element drzewa DOM posiada właściwość style, która reprezentuje reguły CSS przypisane bezpośrednio w atrybucie inline znacznika. Wszystkie nazwy właściwości CSS zawierające myślnik zapisujemy w JavaScript w notacji wielbłądziej (camelCase), na przykład background-color staje się backgroundColor, a font-size zamienia się na fontSize.
Do dynamicznego ukrywania i pokazywania bloków na stronie najczęściej wykorzystuje się właściwość display. Wartość 'none' całkowicie usuwa element z widoku i zwalnia zajmowane przez niego miejsce w układzie strony. Aby przywrócić jego widoczność, przypisujemy odpowiedni typ wyświetlania, np. 'block' lub pusty łańcuch '' (co przywraca wartość zdefiniowaną w zewnętrznym arkuszu CSS).
Warto odróżniać display: none od visibility: hidden. Właściwość visibility ukrywa element jedynie wizualnie, pozostawiając puste pole o jego wymiarach w strukturze dokumentu.
function przelaczSzczegoly() {
const panel = document.getElementById('panelInformacji');
const przycisk = document.getElementById('przyciskPokaz');
if (panel.style.display === 'block') {
panel.style.display = 'none';
przycisk.textContent = 'Pokaż szczegóły techniczne';
} else {
panel.style.display = 'block';
przycisk.textContent = 'Ukryj szczegóły techniczne';
}
}
Zarządzanie klasami CSS za pomocą classList
Chociaż zmiana pojedynczych stylów inline przez element.style jest szybka, w bardziej złożonych komponentach (takich jak systemy zakładek czy przełączniki motywów) znacznie czytelniejszym i bezpieczniejszym podejściem jest manipulowanie klasami CSS za pomocą obiektu classList.
Obiekt classList udostępnia przejrzyste metody:
element.classList.add('klasa')— dodaje klasę do znacznika,element.classList.remove('klasa')— usuwa wskazaną klasę,element.classList.toggle('klasa')— przełącza obecność klasy (dodaje, gdy jej nie ma, lub usuwa, gdy już istnieje),element.classList.contains('klasa')— sprawdza, czy element posiada wskazaną klasę (zwracatruelubfalse).
Dzięki temu cała definicja wyglądu (np. ukrywanie panelu, zmiana koloru aktywnej zakładki) pozostaje w arkuszu stylów CSS, a skrypt JavaScript odpowiada jedynie za aktywację właściwej klasy w odpowiedzi na kliknięcie użytkownika.
function otworzZakladke(nr) {
const panele = document.querySelectorAll('.panel');
const przyciski = document.querySelectorAll('.tab-btn');
panele.forEach(function(p) {
p.classList.remove('aktywny');
});
przyciski.forEach(function(b) {
b.classList.remove('aktywny');
});
document.getElementById('panel' + nr).classList.add('aktywny');
przyciski[nr].classList.add('aktywny');
}
Filtry graficzne CSS i dynamiczne multimedia
Dynamiczna prezentacja multimediów w przeglądarce obejmuje zarówno podmianę wyświetlanych grafik, jak i nakładanie efektów wizualnych bez konieczności edytowania plików na dysku.
Ścieżkę do wyświetlanego pliku graficznego w znaczniku <img> zmieniamy poprzez przypisanie nowego adresu do właściwości src obiektu DOM, na przykład: obraz.src = 'obrazek2.jpg'.
Do nakładania efektów graficznych służy właściwość CSS filter, sterowana w JavaScript za pomocą element.style.filter. Najpopularniejsze funkcje filtrów to:
grayscale(100%)— konwersja obrazu do skali szarości (efekt czarno-biały),sepia(100%)— nadanie grafice ciepłego, postarzanego odcienia sepii,blur(4px)— rozmycie optyczne o zadanym promieniu w pikselach,invert(100%)— negatyw (odwrócenie wszystkich kolorów),none— usunięcie wszelkich filtrów i przywrócenie naturalnego wyglądu.
function zastosujEfekt() {
const wybrany = document.querySelector('input[name="filtr"]:checked');
const baner = document.getElementById('baner');
baner.style.filter = wybrany.value;
}
Ćwiczenia
- 1Zmiana koloru tekstu przez styl inlineZmień kolor tekstu akapitu po kliknięciu przycisku za pomocą właściwości style.color.Zadanie i podpowiedzi →
- 2Zmiana koloru tła w notacji camelCaseUstaw kolor tła elementu korzystając z właściwości backgroundColor w obiekcie style.Zadanie i podpowiedzi →
- 3Ukrywanie elementu za pomocą style.displayUkryj baner informacyjny przypisując wartość none do właściwości display.Zadanie i podpowiedzi →
- 4Przełącznik widoczności sekcji (toggle display)Przełączaj widoczność bloku między wartościami block i none w reakcji na kliknięcie.Zadanie i podpowiedzi →
- 5Dynamiczny rozmiar czcionki z suwakaModyfikuj wielkość tekstu w akapicie w czasie rzeczywistym podczas przesuwania suwaka.Zadanie i podpowiedzi →
- 6Zmiana koloru obramowania z listy selectOdczytaj wybrany kolor z listy rozwijanej i przypisz go do borderColor ramki.Zadanie i podpowiedzi →
- 7Dodawanie klasy CSS metodą classList.addWykorzystaj obiekt classList do dodania nowej klasy CSS do nagłówka.Zadanie i podpowiedzi →
- 8Usuwanie klasy CSS metodą classList.removeUsuń klasę ostrzeżenia z powiadomienia po kliknięciu przycisku akceptacji.Zadanie i podpowiedzi →
- 9Przełączanie motywu z użyciem classList.togglePrzełączaj klasę ciemny-motyw na kontenerze strony za pomocą metody toggle.Zadanie i podpowiedzi →
- 10Weryfikacja obecności klasy przez classList.containsSprawdź metodą contains czy element posiada daną klasę i wyświetl odpowiedni komunikat.Zadanie i podpowiedzi →
- 11Przełączanie paneli zakładek z klasą ukrytyZbuduj prosty mechanizm zakładek przełączający klasę ukryty między dwoma panelami.Zadanie i podpowiedzi →
- 12Podmiana źródła i opisu grafikiZmień atrybut src oraz alt znacznika img po kliknięciu przycisku wyboru zwierzęcia.Zadanie i podpowiedzi →
- 13Nakładanie filtru grayscale na grafikęZastosuj filtr skali szarości CSS na elemencie obrazu po kliknięciu przycisku.Zadanie i podpowiedzi →
- 14Efekt sepii i resetowanie filtrówPrzełączaj między filtrem ciepłej sepii a całkowitym wyczyszczeniem filtrów.Zadanie i podpowiedzi →
- 15Płynne rozmycie optyczne suwakiem blurSteruj wartością promienia rozmycia grafiki za pomocą suwaka input type=range.Zadanie i podpowiedzi →
- 16Kompleksowy selektor filtrów fotograficznychSteruj wieloma filtrami (odwrócenie kolorów, szarość, brak) wraz z aktualizacją etykiety stanu.Zadanie i podpowiedzi →