Een selector bepaalt welk HTML-element je wilt stijlen. In les 1 zag je de basis: h1 { color: teal; }. In deze les leer je alle selectortypen โ van element en klasse tot pseudo-classes die reageren op muisbewegingen.
1 Element-selector
De eenvoudigste selector: schrijf de tagnaam. Alle elementen van dat type krijgen de stijl.
h1 { color: teal; } /* alle h1's */
p { font-size: 1rem; } /* alle p's */
a { text-decoration: none; } /* alle links */
/* Meerdere elementen tegelijk โ komma als scheidingsteken */
h1, h2, h3 {
font-family: Arial, sans-serif;
color: #1a202c;
}
Wat betekent dit?
De komma (,) combineert selectors. h1, h2, h3 { ... } betekent: pas dezelfde stijl toe op h1, h2 รฉn h3. Dit voorkomt code-herhaling.
2 Klasse-selector en ID-selector
Klasse- en ID-selectors laten je specifieke elementen targetten, ongeacht hun type.
/* CSS: punt vรณรณr de naam */
.kaart {
background: white;
padding: 16px;
border-radius: 8px;
}
/* Meerdere klassen op รฉรฉn element */
.btn.groot {
font-size: 1.2rem;
}
/* CSS: hekje vรณรณr de naam */
#header {
background: #1a202c;
padding: 24px;
}
/* In HTML: id="header"
โ elk id is uniek op een pagina */
Klasse (.)
Herbruikbaar โ meerdere elementen mogen dezelfde klasse hebben. Gebruik je het vaakst.
ID (#)
Uniek โ elk ID mag maar รฉรฉn keer per pagina voorkomen. Gebruik je voor specifieke elementen.
3 Descendant en child selectors
Je kunt selectors combineren op basis van de HTML-structuur.
/* Descendant (spatie): elke a BINNEN nav, op elk niveau */
nav a {
color: white;
text-decoration: none;
}
/* Child (>): alleen DIRECTE kinderen van ul */
ul > li {
list-style: none;
padding: 8px;
}
/* Combinaties zijn mogelijk */
.kaart p {
color: gray; /* elke p in een .kaart */
}
header nav a:hover {
color: teal; /* link in nav in header bij hover */
}
Descendant (spatie)
nav a โ alle a-elementen die ergens binnen nav staan, ook genest.
Child (>)
ul > li โ alleen li-elementen die direct kind zijn van ul, niet dieper genest.
4 Attribute selectors
Selecteer elementen op basis van hun HTML-attributen en -waarden.
/* Elk element MET het attribuut href */
[href] { color: blue; }
/* Alleen inputs van type "text" */
input[type="text"] {
border: 2px solid teal;
padding: 8px;
}
/* Links die beginnen met https */
a[href^="https"] {
color: green;
}
/* Afbeeldingen die eindigen op .png */
img[src$=".png"] {
border-radius: 8px;
}
๐ก Handig voor formulieren: input[type="text"], input[type="email"] en input[type="submit"] kunnen elk een eigen stijl krijgen zonder extra klassen.
5 Pseudo-classes
Pseudo-classes selecteren elementen op basis van hun toestand of positie.
/* Toestand-pseudo-classes */
a:hover { color: teal; } /* muiscursor erover */
a:focus { outline: 2px solid teal; } /* via Tab geselecteerd */
button:active { transform: scale(0.98); } /* ingedrukt */
/* Positie-pseudo-classes */
li:first-child { font-weight: bold; } /* eerste li */
li:last-child { border-bottom: none; } /* laatste li */
li:nth-child(2) { background: #f0f0f0; } /* tweede li */
li:nth-child(odd) { background: #fafafa; } /* oneven */
li:nth-child(even) { background: white; } /* even */
/* :not() โ alles behalve */
li:not(:last-child) { border-bottom: 1px solid #eee; }
Wat betekent dit?
Pseudo-klasse = een "nep"-klasse die de browser automatisch toekent op basis van toestand of positie. Je schrijft hem niet in HTML โ de browser berekent hem zelf. :hover is de meestgebruikte.
6 Oefening 1: Selectors in de praktijk
Opdracht:
โ Gebruik nav a (descendant selector) om de links een color te geven
โ Stijl de klasse .kaart met een background-color en padding
โ Stijl het element met id="speciaal" met een border
โ Voeg een :hover effect toe aan nav a
7 Oefening 2: Pseudo-classes
Opdracht:
โ Geef li:first-child een andere achtergrondkleur
โ Geef li:nth-child(even) een lichte achtergrond
โ Voeg een li:hover effect toe
Kennischeck
4 vragen over selectors.
๐
Les 2 voltooid!
Je beheerst nu alle basisselectors รฉn pseudo-classes. In les 3 leer je kleuren, eenheden en tekststijlen.