Element. classList
Obiekt do dodawania, usuwania, przełączania i sprawdzania klas CSS elementu.
- Zwraca
- Obiekt
DOMTokenList. Metodytoggle(),contains()ireplace()zwracajątruelubfalse.
Przykład
#const card = document.querySelector('#card')
card.classList.add('active', 'highlight')
card.classList.remove('highlight')
console.log(card.className)
console.log(card.classList.toggle('done'))
console.log(card.classList.contains('done'))
console.log(card.classList.toggle('done'))
console.log(card.className)Definicja i zastosowanie
#Właściwość classList zwraca obiekt DOMTokenList z klasami elementu i metodami do ich zmiany. To najwygodniejszy sposób, żeby z JavaScriptu zmieniać wygląd strony: styl opisujesz w CSS pod nazwą klasy, a skrypt tylko ją dodaje albo usuwa.
Najważniejsze metody to add() i remove(), które przyjmują jedną lub kilka klas, toggle(), która dodaje klasę, gdy jej nie ma, i usuwa, gdy jest, contains() do sprawdzania oraz replace(stara, nowa). toggle() zwraca true, jeśli klasa została dodana, a drugi argument (true lub false) pozwala wymusić wynik.
W przeciwieństwie do nadpisywania className metody classList nie ruszają pozostałych klas. Dodanie klasy, która już jest, albo usunięcie nieistniejącej niczego nie psuje.
Składnia
#element.classList.add(className1, className2, …)
element.classList.remove(className1, className2, …)
element.classList.toggle(className)
element.classList.toggle(className, force)
element.classList.contains(className)
element.classList.replace(oldClass, newClass)Parametry
#className
napis
Nazwa klasy bez kropki, np."active".force
opcjonalny, boolean
Wtoggle():truezawsze dodaje klasę, afalsezawsze ją usuwa.oldClass, newClass
napisy
Wreplace(): klasa do zamiany i klasa, która zajmie jej miejsce.
Więcej przykładów
#const panel = document.querySelector('#panel')
const button = document.querySelector('#theme')
button.addEventListener('click', () => {
const isLight = panel.classList.toggle('light')
console.log(isLight ? 'Motyw jasny' : 'Motyw ciemny')
})
button.click()const email = document.querySelector('#email')
const isValid = email.value.includes('@') && email.value.includes('.')
email.classList.toggle('invalid', !isValid)
console.log(email.classList.contains('invalid'))
console.log([...email.classList])Obsługa przeglądarek
#Szeroko dostępne
Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.
- Chrome
- Edge
- Firefox
- Safari
Dobre praktyki
#- Podawaj nazwy klas bez kropki:
classList.add("active"), a nie".active". - Wygląd opisuj w CSS, a w JavaScripcie tylko przełączaj klasy. Kod jest czytelniejszy niż ustawianie wielu stylów przez
style. - Przypisanie
element.className = "active"usuwa wszystkie inne klasy, aclassList.add()dokłada klasę do istniejących.
Powiązane hasła
#- HTMLElement.styleObiekt stylów wpisanych bezpośrednio w element (inline), do odczytu i zmiany pojedynczych właściwości CSS.
- Element.setAttribute()Ustawia wartość atrybutu HTML elementu albo dodaje nowy atrybut.
- document.querySelectorAll()Zwraca statyczną listę (NodeList) wszystkich elementów pasujących do selektora CSS.
- EventTarget.addEventListener()Rejestruje funkcję wywoływaną za każdym razem, gdy na elemencie wystąpi zdarzenie, np. kliknięcie.
- HTMLElement.datasetObiekt z wartościami atrybutów data-* elementu, do odczytu i zapisu własnych danych.
Widzisz błąd albo brakuje przykładu? Napisz do nas.