H8 - Id's en classes
00 - Herbruikbare opmaak voor je bestaande onderdelen
De drie projectblokken krijgen kaartclasses, de introducties delen een stijl en de huidige menulink wordt herkenbaar. Een id gebruiken we voor een echt ankerdoel. Tijdelijke naam- en specificiteitsproeven herstellen we vóór we verdergaan.
01 - Waarom heb je id's en classes nodig?
Tot nu toe heb je vooral CSS geschreven voor gewone HTML-tags, zoals p,
h1, section en article. Soms wil je niet alle elementen
van hetzelfde soort aanpassen, maar alleen één specifiek element of een bepaalde groep elementen.
p {
color: black;
}
Deze CSS geldt voor alle alinea's. Dat is niet altijd wat je wilt.
Met class en id kun je elementen een naam geven.
- Een
classgebruik je voor een groep elementen. - Een
idgebruik je voor één uniek element. - In HTML schrijf je
class="naam"ofid="naam". - In CSS spreek je een class aan met een punt:
.naam. - In CSS spreek je een id aan met een hekje:
#naam.
Actie — Bouw verder
- Geef de bestaande introductie-alinea op Home
class="intro"en schrijf in style.css een .intro-regel voor een iets grotere tekst. - Controleer dat andere alinea's hun gewone tekstgrootte houden.
- Alleen oefenen: maak de naam kort fout in HTML en herstel hem direct weer. De werkende class intro blijft staan.
02 - Wat is een class?
Een class is een naam die je aan één of meer HTML-elementen geeft. Elementen met dezelfde class kun je daarna tegelijk vormgeven met CSS.
<p class="intro">Welkom op mijn website.</p>
<p>Dit is een gewone alinea.</p>
<p class="intro">Deze alinea hoort ook bij de introductie.</p>
.intro {
font-size: 20px;
color: darkblue;
}
- De twee alinea's met
class="intro"krijgen dezelfde stijl. - De gewone alinea zonder class wordt niet door
.introgeraakt. - Een class mag meerdere keren op dezelfde pagina voorkomen.
- Daarom gebruik je classes vaak voor herbruikbare vormgeving.
Actie — Bouw verder
- Gebruik dezelfde class intro ook op de introductie-alinea van over.html.
- Controleer dat één aanpassing in .intro beide introducties opmaakt, terwijl gewone alinea's gelijk blijven.
- Verander niet de classnaam om een tweede alinea te stylen; juist het hergebruik is hier het doel.
03 - Een class selector in CSS
In HTML schrijf je de class zonder punt. In CSS gebruik je juist wel een punt.
<article class="kaart">
<h2>Nieuws</h2>
<p>Vandaag leren we werken met classes.</p>
</article>
.kaart {
padding: 24px;
border: 1px solid gray;
background-color: white;
}
- In HTML:
class="kaart". - In CSS:
.kaart. - De punt hoort dus niet in de HTML.
- De punt hoort wel in de CSS-selector.
Dit is een veelgemaakte fout:
<article class=".kaart">
<h2>Fout voorbeeld</h2>
</article>
In HTML schrijf je geen punt in de classnaam.
Actie — Bouw verder
- Geef de drie bestaande project-articles op portfolio.html
class="kaart". Behoud de section en de gezamenlijke h2 boven de projecten. - Verplaats de specifieke projectopmaak van de algemene article-selector naar .kaart: padding, border, achtergrond en buitenmarge blijven behouden.
- Controleer dat de drie projectkaarten er hetzelfde uitzien als vóór het verplaatsen. In H9 voegen we een technische kaartencontainer toe; H10 geeft die een flex-layout.
04 - Meerdere classes op één element
Een element mag meerdere classes hebben. Je zet dan meerdere classnamen in hetzelfde
class-attribuut, gescheiden door spaties.
<p class="melding belangrijk">De deadline is vandaag.</p>
.melding {
padding: 16px;
border: 1px solid gray;
}
.belangrijk {
color: darkred;
font-weight: bold;
}
- Deze alinea heeft de class
melding. - Deze alinea heeft ook de class
belangrijk. - Beide CSS-regels kunnen dus invloed hebben op hetzelfde element.
- Zo kun je stijlen combineren zonder alles opnieuw te schrijven.
Actie — Bouw verder
- Geef één project
class="kaart uitgelicht"en maak .uitgelicht met een accentkleurige rand. De bestaande .kaart-opmaak blijft ook gelden. - Voeg op elke pagina alleen aan de huidige menulink class huidig toe en behoud daar aria-current="page".
- Maak .huidig herkenbaar met bijvoorbeeld vet gewicht en de donkere accentkleur; laat ook een onderstreping of andere vormmarkering staan.
- Controleer zowel het combineren van kaart en uitgelicht als de actieve navigatie op alle vier de pagina's.
05 - Wat is een id?
Een id is een unieke naam voor één element op de pagina. Je gebruikt een id als je één heel specifiek onderdeel wilt herkennen.
<h1 id="hoofdtitel">Mijn website</h1>
#hoofdtitel {
color: navy;
text-align: center;
}
- Een id mag maar één keer op dezelfde pagina voorkomen.
- In HTML schrijf je
id="hoofdtitel". - In CSS gebruik je een hekje:
#hoofdtitel. - Gebruik een id dus niet voor herhaalde onderdelen.
Actie — Bouw verder
- Geef op Home de bestaande section Uitgelicht werk het unieke
id="projecten". - Maak tijdelijk een #projecten-regel met een opvallende border en controleer dat alleen die section wordt geraakt.
- Verwijder de tijdelijke id-opmaak; behoud het unieke id als ankerdoel voor het volgende item. Herbruikbare opmaak blijft met classes werken.
06 - Id's en links naar een plek op dezelfde pagina
Een id kun je ook gebruiken als anker op dezelfde pagina. Daarmee kun je linken naar een specifieke plek binnen de pagina.
<nav>
<a href="#contact">Ga naar contact</a>
</nav>
<section id="contact">
<h2>Contact</h2>
<p>Stuur ons een bericht.</p>
</section>
- De link heeft
href="#contact". - De section heeft
id="contact". - Als je op de link klikt, springt de browser naar dat onderdeel.
- Dit werkt omdat de naam na het hekje gelijk is aan de id.
Actie — Bouw verder
- Maak op Home vóór de projectsection een tekstlink met
href="#projecten"en duidelijke tekst, zoalsBekijk mijn uitgelichte werk. - Controleer dat klikken naar de bestaande section met id projecten springt. Maak het venster zo nodig lager om de sprong te zien.
- Behoud deze ankerlink en het id. De vier links van je hoofdmenu blijven naar de vier aparte pagina's verwijzen.
07 - Class of id kiezen
De meeste vormgeving doe je met classes. Een id gebruik je alleen als iets echt uniek is.
- Gebruik een class voor onderdelen die vaker kunnen voorkomen.
- Gebruik een id voor één unieke plek op de pagina.
- Gebruik een id voor ankerlinks binnen dezelfde pagina.
- Gebruik liever geen id voor gewone herbruikbare CSS-opmaak.
<article class="kaart">
<h2>Nieuws</h2>
<p>Een kaart kan vaker voorkomen.</p>
</article>
<section id="contact">
<h2>Contact</h2>
<p>Dit is één specifieke plek op de pagina.</p>
</section>
In dit voorbeeld is kaart een class, omdat je meerdere kaarten kunt hebben.
contact is een id, omdat die plek maar één keer op de pagina staat.
Actie — Controleer en rond af
- Controleer dat alle projectkaarten class kaart delen en dat alleen het gekozen project ook uitgelicht heeft.
- Controleer dat het ankerdoel projecten op Home precies één keer als id voorkomt.
- Leg in één zin uit waarom je opmaak hier een class gebruikt en de linkbestemming een id. Voeg geen onnodige id's toe.
08 - Namen kiezen
Kies namen die duidelijk maken wat het onderdeel is of welke rol het heeft. Gebruik liever geen namen die alleen beschrijven hoe iets eruitziet.
- Goed:
intro,kaart,melding,contact. - Minder handig:
rood,groot,linksblokje. - Gebruik kleine letters.
- Gebruik geen spaties in classnamen of id's.
- Gebruik bij meerdere woorden een streepje, bijvoorbeeld
belangrijke-melding.
<p class="belangrijke-melding">Let op: de planning is gewijzigd.</p>
.belangrijke-melding {
padding: 16px;
border-left: 4px solid orange;
}
Actie — Controleer en rond af
- Bekijk de namen intro, kaart, uitgelicht en huidig in je eigen site.
- Verbeter een eventuele eigen onduidelijke naam tegelijk in HTML en CSS; een id-wijziging vraagt ook aanpassing van de bijbehorende href.
- Zijn de namen al duidelijk, behoud ze dan. Je hoeft geen fout te bedenken om deze controle af te ronden.
09 - Specificiteit: waarom wint deze regel?
CSS-regels kunnen tegelijk op hetzelfde element passen. Dan moet de browser kiezen welke regel wint. Dat heet specificiteit. Voor nu hoef je alleen deze eenvoudige volgorde te kennen:
- Een tag selector is vrij algemeen, bijvoorbeeld
p. - Een class selector is specifieker, bijvoorbeeld
.intro. - Een id selector is nog specifieker, bijvoorbeeld
#hoofdtitel.
<p id="eerste-alinea" class="intro">Welkom op de website.</p>
p {
color: black;
}
.intro {
color: blue;
}
#eerste-alinea {
color: red;
}
De tekst wordt rood, omdat de id selector specifieker is dan de class selector en de tag selector.
Gebruik dit niet als truc om CSS ingewikkeld te maken. Houd selectors zo eenvoudig mogelijk.
Actie — Alleen oefenen
- Geef één bestaande intro-alinea tijdelijk ook een uniek id, bijvoorbeeld test-specificiteit, en voeg drie botsende kleurregels toe: p, .intro en #test-specificiteit.
- Voorspel welke kleur wint en controleer het resultaat. Gebruik de bestaande kleuren uit :root.
- Verwijder daarna het test-id en de testkleurregels en herstel de gewone intro-opmaak. Behoud de echte anker-id projecten.
10 - Veelgemaakte fouten
- Een punt in de HTML zetten:
class=".kaart". Dat moetclass="kaart"zijn. - Een punt vergeten in CSS:
kaart { ... }. Dat moet.kaart { ... }zijn. - Een hekje vergeten bij een id selector:
hoofdtitel { ... }. Dat moet#hoofdtitel { ... }zijn. - Dezelfde id meerdere keren gebruiken op één pagina.
- Een class gebruiken met spaties in de naam, zoals
class="grote melding", terwijl je eigenlijk één naam bedoelt.
<!-- Dit zijn twee classes: grote en melding -->
<p class="grote melding">Let op.</p>
<!-- Dit is één classnaam -->
<p class="grote-melding">Let op.</p>
Spaties in het class-attribuut betekenen dus: meerdere classes.
Actie — Alleen oefenen
- Maak bij één kaart tijdelijk een puntfout in de HTML-class of CSS-selector en zoek de oorzaak van de ontbrekende stijl.
- Herstel de fout direct. Controleer daarna dat kaart, uitgelicht, intro en huidig weer correct gekoppeld zijn.
- Controleer ook op dubbele id's. De actie is pas klaar als de hele site weer werkt; een fout is geen blijvend eindresultaat.
11 - Best practices
- Gebruik classes voor de meeste CSS-opmaak.
- Gebruik id's alleen voor unieke onderdelen of ankerlinks.
- Kies duidelijke namen die iets zeggen over de rol of inhoud.
- Gebruik kleine letters en streepjes.
- Maak selectors niet onnodig lang.
- Gebruik niet overal id's om CSS sterker te maken.
- Controleer goed of de naam in HTML exact gelijk is aan de naam in CSS.
Actie — Bouw verder
- Geef de bestaande hoofdonderdelen op elke pagina vaste classes: site-header, site-nav, site-main, site-aside en site-footer op de bijbehorende semantische tags.
- Behoud hun inhoud en bestaande basisopmaak. Deze classes gebruiken we vanaf H10 voor gerichte layoutregels; ze voegen nu nog geen layout toe.
- Controleer betekenisvolle namen, unieke id's en eenvoudige selectors. Verwijder alle tijdelijke test-id's en foutproeven.
12 - Afronding van je bestaande site
Actie — Controleer en rond af
- Controleer de bestaande vier pagina's op dezelfde hoofdclasses, werkende intro-opmaak en de juiste actieve menulink.
- Controleer op Portfolio drie kaarten waarvan één ook uitgelicht is; controleer op Home de werkende ankerlink naar projecten.
- Valideer de HTML en controleer dezelfde style.css. Voeg alleen iets toe als het ontbreekt; maak geen nieuwe pagina voor deze opdracht.
Quiz
-
Vraag 1. Waarvoor gebruik je meestal een class?
Goed. Een class mag vaker voorkomen.Niet goed. Classes gebruik je voor herbruikbare groepen of stijlen. -
Vraag 2. Waarvoor gebruik je meestal een id?
Goed. Een id hoort uniek te zijn.Niet goed. Een id gebruik je voor één uniek onderdeel. -
Vraag 3. Hoe spreek je een class
introaan in CSS?
Goed. Een class selector begint met een punt.Niet goed. Voor een class gebruik je een punt in CSS. -
Vraag 4. Hoe spreek je een id
hoofdtitelaan in CSS?
Goed. Een id selector begint met een hekje.Niet goed. Voor een id gebruik je een hekje in CSS. -
Vraag 5. Welke HTML-code is goed voor een class?
Goed. In HTML schrijf je de classnaam zonder punt.Niet goed. De punt gebruik je alleen in CSS. -
Vraag 6. Wat betekent
class="melding belangrijk"?
Goed. Spaties scheiden meerdere classes.Niet goed. Een spatie in het class-attribuut betekent een extra class. -
Vraag 7. Welke selector is het meest specifiek?
Goed. Een id selector is specifieker dan een class of tag selector.Niet goed. Van deze drie is de id selector het meest specifiek. -
Vraag 8. Welke link springt naar
id="contact"?
Goed. Voor een ankerlink gebruik je het hekje inhref.Niet goed. De link naar een id gebruikthref="#contact". -
Vraag 9. Welke naam is meestal het meest bruikbaar?
Goed. Deze naam beschrijft de rol van het onderdeel.Niet goed. Kies liever een naam die de rol of inhoud beschrijft. -
Vraag 10. Welke uitspraak is juist?
Goed. Dat is het belangrijkste verschil.Niet goed. Classes zijn herbruikbaar; id's horen uniek te zijn.