Element. classList
Un objet pour ajouter, retirer, basculer et vérifier les classes CSS d’un élément.
- Renvoie
- Un objet
DOMTokenList. Les méthodestoggle(),contains()etreplace()renvoienttrueoufalse.
Exemple
#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)Définition et utilisation
#La propriété classList renvoie un objet DOMTokenList avec les classes de l’élément et des méthodes pour les modifier. C’est le moyen le plus pratique de changer l’apparence de la page depuis JavaScript : vous décrivez le style en CSS sous un nom de classe, et le script se contente de l’ajouter ou de la retirer.
Les méthodes les plus importantes sont add() et remove(), qui acceptent une ou plusieurs classes, toggle(), qui ajoute la classe si elle est absente et la retire si elle est présente, contains() pour vérifier, et replace(ancienne, nouvelle). toggle() renvoie true si la classe a été ajoutée, et le second argument (true ou false) permet de forcer le résultat.
Contrairement à l’écrasement de className, les méthodes de classList ne touchent pas aux autres classes. Ajouter une classe déjà présente, ou en retirer une qui n’existe pas, ne casse rien.
Syntaxe
#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)Paramètres
#className
chaîne
Le nom de la classe sans le point, par ex."active".force
booléen, optionnel
Danstoggle():trueajoute toujours la classe, etfalsela retire toujours.oldClass, newClass
chaînes
Dansreplace(): la classe à remplacer et la classe qui prendra sa place.
Plus d’exemples
#const panel = document.querySelector('#panel')
const button = document.querySelector('#theme')
button.addEventListener('click', () => {
const isLight = panel.classList.toggle('light')
console.log(isLight ? 'Thème clair' : 'Thème sombre')
})
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])Compatibilité des navigateurs
#Largement disponible
Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.
- Chrome
- Edge
- Firefox
- Safari
Bonnes pratiques
#- Indiquez les noms de classes sans le point :
classList.add("active"), et non".active". - Décrivez l’apparence en CSS, et contentez-vous de basculer des classes en JavaScript. Le code est plus lisible que de définir de nombreux styles via
style. - Affecter
element.className = "active"supprime toutes les autres classes, alors queclassList.add()ajoute la classe à celles qui existent déjà.
Entrées associées
#- HTMLElement.styleUn objet pour les styles écrits directement sur l’élément (inline), pour lire et modifier des propriétés CSS individuelles.
- Element.setAttribute()Définit la valeur d’un attribut HTML d’un élément, ou en ajoute un nouveau.
- document.querySelectorAll()Renvoie une liste statique (NodeList) de tous les éléments qui correspondent à un sélecteur CSS.
- EventTarget.addEventListener()Enregistre une fonction appelée à chaque fois qu’un événement se produit sur un élément, par ex. un clic.
- HTMLElement.datasetUn objet avec les valeurs des attributs data-* d’un élément, pour lire et écrire vos propres données.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.