Wat is classList?

classList is een eigenschap van elk HTML-element. Hiermee kun je CSS-klassen toevoegen, verwijderen, wisselen en controleren via JavaScript.

Waarom classList gebruiken?
  • Stijl aanpassen zonder inline CSS te schrijven
  • Animaties en transities activeren via klassen
  • Elementen zichtbaar of onzichtbaar maken
  • Actieve staat bijhouden (bijv. geselecteerd menu-item)
// Een element ophalen
const knop = document.querySelector('#mijn-knop');

// classList geeft toegang tot de klassen van het element
console.log(knop.classList); // DOMTokenList ['knop', 'primair']

classList.add()

Voegt een of meerdere klassen toe aan een element. Als de klasse al bestaat, wordt hij niet opnieuw toegevoegd.

const element = document.querySelector('#mijn-element');

// Eén klasse toevoegen
element.classList.add('actief');

// Meerdere klassen tegelijk toevoegen
element.classList.add('actief', 'zichtbaar', 'geselecteerd');

Praktisch voorbeeld

// HTML: <button id="laad-knop">Laden</button>
// CSS:  .laden { opacity: 0.5; cursor: wait; }

const knop = document.querySelector('#laad-knop');

knop.addEventListener('click', () => {
  knop.classList.add('laden');
  knop.textContent = 'Even geduld...';
});

classList.remove()

Verwijdert een of meerdere klassen van een element. Als de klasse niet bestaat, gebeurt er niets.

const element = document.querySelector('#mijn-element');

// Eén klasse verwijderen
element.classList.remove('actief');

// Meerdere klassen tegelijk verwijderen
element.classList.remove('actief', 'zichtbaar');

Praktisch voorbeeld

// HTML: <div id="melding" class="fout-melding">Er ging iets mis!</div>
// CSS:  .verborgen { display: none; }

const melding = document.querySelector('#melding');
const sluitKnop = document.querySelector('#sluit');

sluitKnop.addEventListener('click', () => {
  melding.classList.add('verborgen');
});

classList.toggle()

toggle() voegt een klasse toe als die nog niet aanwezig is, of verwijdert hem als die er al wel is. Ideaal voor aan/uit-knoppen.

const element = document.querySelector('#mijn-element');

// Wisselt 'actief': voegt toe als afwezig, verwijdert als aanwezig
element.classList.toggle('actief');
toggle() is perfect voor:
  • Donkere modus aan/uit
  • Menu openen en sluiten
  • Item afvinken in een takenlijst
  • Accordion uitklappen

Donkere modus voorbeeld

// HTML: <button id="thema-knop">Donkere modus</button>
// CSS:  body.donker { background: #1a1a1a; color: white; }

const knop = document.querySelector('#thema-knop');

knop.addEventListener('click', () => {
  document.body.classList.toggle('donker');
});

Taak afvinken voorbeeld

// CSS: .afgevinkt { text-decoration: line-through; opacity: 0.5; }

const taken = document.querySelectorAll('.taak');

for (let taak of taken) {
  taak.addEventListener('click', () => {
    taak.classList.toggle('afgevinkt');
  });
}

toggle() met tweede argument

Je kunt een boolean meegeven als tweede argument. true voegt altijd toe, false verwijdert altijd.

const isActief = true;

// Voegt 'actief' toe als isActief true is, verwijdert als false
element.classList.toggle('actief', isActief);

classList.contains()

Controleert of een element een bepaalde klasse heeft. Geeft true of false terug.

const element = document.querySelector('#mijn-element');

if (element.classList.contains('actief')) {
  console.log('Element is actief');
} else {
  console.log('Element is niet actief');
}

Praktisch voorbeeld

const knop = document.querySelector('#toggle-knop');

knop.addEventListener('click', () => {
  if (knop.classList.contains('actief')) {
    knop.textContent = 'Activeer';
    knop.classList.remove('actief');
  } else {
    knop.textContent = 'Deactiveer';
    knop.classList.add('actief');
  }
});

Combinaties

In de praktijk gebruik je classList-methodes vaak samen met event listeners en querySelectorAll.

Actief menu-item bijhouden

// HTML:
// <nav>
//   <a href="#" class="nav-item">Home</a>
//   <a href="#" class="nav-item">Over</a>
//   <a href="#" class="nav-item">Contact</a>
// </nav>

const navItems = document.querySelectorAll('.nav-item');

for (let item of navItems) {
  item.addEventListener('click', () => {
    // Verwijder 'actief' van alle items
    for (let andereItem of navItems) {
      andereItem.classList.remove('actief');
    }
    // Voeg 'actief' toe aan het aangeklikte item
    item.classList.add('actief');
  });
}

Klasse op meerdere elementen tegelijk

const alleKaartjes = document.querySelectorAll('.kaartje');

// Voeg klasse toe aan alle kaartjes
for (let kaartje of alleKaartjes) {
  kaartje.classList.add('zichtbaar');
}

// Verwijder klasse van alle kaartjes
for (let kaartje of alleKaartjes) {
  kaartje.classList.remove('geselecteerd');
}

Compleet voorbeeld — tabs

Dit voorbeeld laat zien hoe je tabs bouwt met classList. Één tab is actief tegelijk.

HTML

<nav>
  <button class="tab actief" data-tab="tab1">Tab 1</button>
  <button class="tab" data-tab="tab2">Tab 2</button>
  <button class="tab" data-tab="tab3">Tab 3</button>
</nav>

<section id="tab1" class="tab-inhoud zichtbaar">Inhoud tab 1</section>
<section id="tab2" class="tab-inhoud">Inhoud tab 2</section>
<section id="tab3" class="tab-inhoud">Inhoud tab 3</section>

CSS (basis)

.tab-inhoud { display: none; }
.tab-inhoud.zichtbaar { display: block; }
.tab.actief { font-weight: bold; border-bottom: 2px solid blue; }

JavaScript

const tabs = document.querySelectorAll('.tab');
const tabInhoud = document.querySelectorAll('.tab-inhoud');

for (let tab of tabs) {
  tab.addEventListener('click', () => {
    // Verwijder 'actief' van alle tabs
    for (let andereTab of tabs) {
      andereTab.classList.remove('actief');
    }

    // Verwijder 'zichtbaar' van alle inhoud
    for (let inhoud of tabInhoud) {
      inhoud.classList.remove('zichtbaar');
    }

    // Voeg 'actief' toe aan de aangeklikte tab
    tab.classList.add('actief');

    // Toon de bijbehorende inhoud
    const doelId = tab.dataset.tab;
    document.querySelector('#' + doelId).classList.add('zichtbaar');
  });
}

Samenvatting

Methode Wat doet het Voorbeeld
classList.add() Klasse toevoegen element.classList.add('actief')
classList.remove() Klasse verwijderen element.classList.remove('actief')
classList.toggle() Klasse wisselen (aan/uit) element.classList.toggle('actief')
classList.contains() Controleren of klasse aanwezig is element.classList.contains('actief')

toggle() voor aan/uit

Gebruik toggle() voor donkere modus, menu's openen en afvinken. Dat is korter dan add() en remove() apart.

contains() voor conditie

Controleer eerst met contains() of een klasse aanwezig is voordat je er iets mee doet.

Stijl via klassen

Schrijf stijlen in CSS en activeer ze via classList. Schrijf nooit direct stijlen in JavaScript tenzij het echt moet.

Meerdere klassen

Je kunt meerdere klassen tegelijk toevoegen of verwijderen: classList.add('a', 'b', 'c')