H9 - Div's

00 - Je pagina ordenen zonder opnieuw te beginnen

De bestaande semantische onderdelen blijven staan. Een technische binnenwrapper begrenst de inhoudsbreedte. Float en clear oefen je apart: ze zijn geen bouwstenen voor de uiteindelijke hoofdindeling.

01 - Wat doet een div?

Een <div> is een algemene container. div komt van division. Dat betekent verdeling, gebied of stukje. Je maakt met een div dus een stukje op je website waarin je onderdelen bij elkaar zet.

  • Een div is een algemeen stukje van je pagina.
  • Een div betekent zelf niets inhoudelijks.
  • Een div is vooral handig als doosje voor CSS.
  • Een div heeft een openingstag en een sluit-tag.
  • In een div kun je andere HTML-elementen zetten.
  • Gebruik een div vooral als er geen betere HTML-tag voor bestaat.
<div class="kaart">
    <h2>Nieuws</h2>
    <p>Hier staat een kort bericht.</p>
</div>

De class kaart maakt duidelijk welke rol dit doosje heeft. Zonder CSS ziet een div er meestal niet bijzonder uit.

Actie — Bouw verder

  1. Werk op portfolio.html en groepeer de bestaande kaartensection en projecttabel binnen main in één div class="pagina-breedte".
  2. De div is alleen een technisch binnenblok voor breedte en ruimte. Behoud main als de hoofdinhoud en behoud alle kaarten, afbeeldingen en tabel.
  3. Controleer dat de div beide onderdelen volledig omvat en netjes vóór de sluit-tag van main eindigt.
02 - Div is algemeen, semantische tags hebben betekenis

In H1 heb je semantische HTML5-tags gezien. Die tags vertellen iets over de betekenis van de inhoud. Een div doet dat niet.

  • <header> is duidelijker dan <div id="bovenkant">.
  • <nav> is duidelijker dan <div id="menu">.
  • <main> is duidelijker dan <div id="inhoud">.
  • <article> is duidelijker dan <div class="bericht"> als het echt een zelfstandig bericht is.
  • <footer> is duidelijker dan <div id="onderkant">.
<!-- Minder duidelijk -->
<div id="menu">
    <a href="index.html">Home</a>
    <a href="contact.html">Contact</a>
</div>

<!-- Duidelijker -->
<nav>
    <a href="index.html">Home</a>
    <a href="contact.html">Contact</a>
</nav>

Gebruik dus eerst de HTML-tag die het beste past bij de inhoud. Gebruik pas een div als je alleen een extra doosje nodig hebt voor vormgeving of layout.

Actie — Controleer en rond af

  1. Bekijk op dezelfde pagina de rollen van header, nav, main, de projectsection, de articles, aside en footer.
  2. Behoud die semantische tags. Vervang ze niet door divs om dezelfde opmaak te krijgen.
  3. Controleer dat je nieuwe pagina-breedte-div alleen een technische rol heeft en geen onnodige extra inhoudslaag toevoegt.
03 - Wanneer gebruik je wel een div?

Een div is nog steeds nuttig. Je gebruikt hem vooral als je een extra container nodig hebt, maar geen extra betekenis wilt toevoegen.

  • Om meerdere elementen samen te groeperen voor CSS.
  • Om een wrapper te maken rond een deel van de pagina.
  • Om een achtergrond, rand, padding of layout-regel op een groep toe te passen.
  • Om een technisch hulpdoosje te maken voor vormgeving.
<main>
    <div class="pagina-breedte">
        <h1>Mijn website</h1>
        <p>Deze inhoud staat in een gecentreerde wrapper.</p>
    </div>
</main>
.pagina-breedte {
    width: 100%;
    max-width: 1000px;
    margin: 0 auto;
}

Hier is <main> de semantische tag voor de hoofdinhoud. De div is alleen een hulpmiddel om de breedte en ruimte te regelen.

Actie — Bouw verder

  1. Voeg ook op Home, Over en Contact één pagina-breedte-div binnen main om de bestaande inhoud toe.
  2. Maak op Portfolio binnen de projectsection ook één div class="kaarten" om alleen de drie bestaande article.kaart-elementen. De gezamenlijke h2 blijft vóór deze div staan en de projecttabel blijft buiten de div.
  3. Verplaats de width:100%, max-width:1000px en margin:0 auto uit je main-regel naar .pagina-breedte. Verwijder die breedteregels daarna van main.
  4. Behoud de padding en dekkende achtergrond op main. Geef de binnenwrapper geen extra padding die de ruimte onbedoeld verdubbelt.
  5. Controleer alle pagina's. De binnenwrapper begrenst de leesbreedte; de kaarten-div groepeert alleen de drie projecten voor de flexbox uit H10.
04 - Geen creatieve id-namen voor layout

Vroeger werden websites vaak opgebouwd met veel divs en creatieve id-namen. Dat werkt technisch, maar de HTML wordt snel onduidelijk.

<!-- Niet ideaal -->
<div id="bovenblok">
    <h1>Mijn website</h1>
</div>

<div id="linkerding">
    <p>Nieuws</p>
</div>

<div id="rechterding">
    <p>Contact</p>
</div>

Beter is om eerst semantische tags te kiezen en daarna classes te gebruiken voor herbruikbare vormgeving.

<header>
    <h1>Mijn website</h1>
</header>

<main>
    <section class="kaart">
        <h2>Nieuws</h2>
        <p>Laatste berichten.</p>
    </section>

    <section class="kaart">
        <h2>Contact</h2>
        <p>Neem contact op.</p>
    </section>
</main>
  • Gebruik geen id's als gewone layoutnamen.
  • Gebruik classes voor onderdelen die vaker kunnen voorkomen.
  • Gebruik semantische tags voor betekenis.
  • Gebruik divs alleen als extra technische container.

Actie — Controleer en rond af

  1. Controleer of je vormgeving met de bestaande classes werkt en je hoofdonderdelen semantische tags blijven.
  2. Vervang eventuele eigen namen als linkerding of bovenblok door een passende class of tag, en pas CSS tegelijk aan.
  3. Behoud echte anker-id's zoals projecten en hun links. Je hoeft goede namen niet voor deze oefening te veranderen.
05 - Wat doet float?

Met float kun je een element naar links of rechts laten zweven. Tekst en andere inline inhoud kunnen er dan omheen lopen.

<img class="foto-links" src="img/project-01.webp" alt="Een foto bij het artikel">

<p>
    Deze tekst loopt langs de afbeelding. Dat kan handig zijn bij een artikel waarin een kleine
    afbeelding naast de tekst staat.
</p>
.foto-links {
    float: left;
    width: 200px;
    margin-right: 20px;
    margin-bottom: 12px;
}
  • float: left zet het element links.
  • float: right zet het element rechts.
  • Margin zorgt voor ruimte tussen de afbeelding en de tekst.
  • Float is vooral logisch voor tekst die om een afbeelding heen loopt.

Actie — Alleen oefenen

  1. Werk tijdelijk op over.html. Plaats een kopie van project-01.webp bij een langere alinea en geef die afbeelding class foto-links.
  2. Pas de float-regel uit de uitleg toe op .foto-links en gebruik margin om ruimte tussen beeld en tekst te maken.
  3. Controleer dat tekst om de afbeelding loopt. Bewaar deze proef tot item 7; de portfoliokaarten verander je niet in een float-layout.
06 - Float is niet meer de beste layout-methode

Float werd vroeger veel gebruikt om complete websites in kolommen te zetten. Tegenwoordig gebruik je daarvoor meestal flexbox of grid.

.zijbalk {
    float: left;
    width: 30%;
}

.inhoud {
    float: right;
    width: 65%;
}

Dit soort layout met float kom je nog tegen in oude websites, maar het is minder prettig om mee te werken dan moderne CSS-layout.

  • Float haalt een element deels uit de normale documentstroom.
  • Daardoor kan de hoogte van een ouder-element onverwacht lijken.
  • Je moet vaak extra regels gebruiken om floats weer te stoppen.
  • Voor nieuwe layouts leer je straks flexbox en grid.

Actie — Alleen oefenen

  1. Vergelijk de oude tweekoloms-float uit de uitleg met je eigen tijdelijke tekstomloop.
  2. Je hoeft de oude float-layout niet in je site te bouwen. De hoofdindeling krijgt straks grid en de kleine onderdelen flexbox.
  3. Laat alleen de tijdelijke tekstomloop op Over staan voor de clear-proef; maak geen gefloate navigatie of projectkolommen.
07 - Clear: stoppen met float

Als een element niet naast een gefloat element mag komen, gebruik je clear.

<img class="foto-links" src="img/project-01.webp" alt="Een foto bij het artikel">

<p>Deze tekst loopt langs de afbeelding.</p>

<h2 class="nieuwe-sectie">Nieuwe sectie</h2>
.foto-links {
    float: left;
    width: 200px;
    margin-right: 20px;
}

.nieuwe-sectie {
    clear: both;
}
  • clear: left stopt naast links gefloate elementen.
  • clear: right stopt naast rechts gefloate elementen.
  • clear: both stopt naast beide kanten.
  • Daarna begint het element onder de float.

Actie — Alleen oefenen

  1. Gebruik bij je tijdelijke foto op Over een volgende kop die onder de afbeelding moet beginnen. Geef die tijdelijk class nieuwe-sectie en pas clear:both toe.
  2. Controleer het verschil met en zonder clear. Maak de tekst zo nodig korter om het effect te zien.
  3. Verwijder daarna de oefenafbeelding, alleen daarvoor gemaakte kop/class en de CSS-regels .foto-links en .nieuwe-sectie. Herstel je oorspronkelijke Over-inhoud.
  4. Wil je bewust tekstomloop in je eigen ontwerp houden, dan mag dat; controleer straks ook de smalle weergave. Float en clear zijn geen eis voor het eindproduct.
08 - Div, section of article?

Kies eerst de tag die inhoudelijk klopt. Gebruik daarna pas een div als extra hulpmiddel.

  • Gebruik <section> voor een duidelijk onderdeel van een pagina.
  • Gebruik <article> voor inhoud die zelfstandig kan bestaan.
  • Gebruik <nav> voor navigatie.
  • Gebruik <header> en <footer> voor boven- en onderkant.
  • Gebruik <div> als er geen betekenisvolle tag past.
<article class="kaart">
    <h2>Blogbericht</h2>
    <p>Dit bericht kan zelfstandig gelezen worden.</p>
</article>

<div class="schaduw-wrapper">
    <article>
        <h2>Bericht met extra vormgeving</h2>
        <p>De div is hier alleen een extra CSS-wrapper.</p>
    </article>
</div>

Actie — Controleer en rond af

  1. Beoordeel op je bestaande pagina's of section een inhoudelijk onderdeel en article een zelfstandig project beschrijft.
  2. Behoud alleen de technische wrapper die de breedte regelt. Verwijder extra divs die geen functie hebben.
  3. Controleer na een wijziging steeds nesting, ankerlinks en de kaartclasses. Laat de inhoud van je portfolio intact.
09 - Best practices
  • Gebruik niet automatisch overal een div.
  • Kies eerst een semantische HTML-tag als die past.
  • Gebruik classes voor herbruikbare vormgeving.
  • Gebruik id's niet als creatieve layoutnamen.
  • Gebruik divs als technische wrappers voor CSS.
  • Gebruik float vooral voor tekst om afbeeldingen heen.
  • Gebruik float liever niet voor nieuwe pagina-layouts.
  • Gebruik clear als inhoud onder een float moet beginnen.

Actie — Controleer en rond af

  1. Controleer op alle vier de pagina's de vijf semantische hoofdonderdelen en één pagina-breedte-wrapper binnen main.
  2. Controleer dat de breedteregels niet dubbel op main én wrapper staan en dat de gewone projectkaarten nog werken.
  3. Controleer dat tijdelijke float/clear-proeven zijn opgeruimd, tenzij je expliciet voor de tekstomloop hebt gekozen.
10 - Afronding van je bestaande site

Actie — Controleer en rond af

  1. Rond de bestaande site af met duidelijke structuur en de gedeelde wrapperstijl. Begin geen nieuw HTML-bestand.
  2. Controleer dat de projectafbeeldingen, lijsten, tabel, echte links en kleurvariabelen behouden zijn.
  3. De volgende stap zet je bestaande menu, footer en kaarten met flexbox neer; de hoofdindeling blijft voorlopig onder elkaar staan.
Quiz
  1. Vraag 1. Wat is een <div>?



    Goed. Een div is een algemene container.
    Niet goed. Een div heeft zelf geen inhoudelijke betekenis.
  2. Vraag 2. Welke tag is meestal beter dan <div id="menu">?



    Goed. Voor navigatie gebruik je <nav>.
    Niet goed. Een menu hoort meestal in <nav>.
  3. Vraag 3. Wanneer gebruik je nog wel een div?



    Goed. Een div is nuttig als technische wrapper.
    Niet goed. Kies eerst een betekenisvolle tag als die past.
  4. Vraag 4. Wat doet float: left?



    Goed. Float kan tekst om een element heen laten lopen.
    Niet goed. Float verplaatst een element naar links of rechts.
  5. Vraag 5. Waarvoor is float tegenwoordig vooral nog logisch?



    Goed. Dat is nog steeds een logische toepassing van float.
    Niet goed. Voor nieuwe layouts gebruik je straks liever flexbox of grid.
  6. Vraag 6. Wat doet clear: both?



    Goed. clear: both stopt het meelopen naast floats.
    Niet goed. Clear bepaalt of iets naast een float mag staan.
  7. Vraag 7. Welke regel laat een element onder een links gefloate afbeelding beginnen?



    Goed. Met clear: left; begin je onder links gefloate elementen.
    Niet goed. Hiervoor gebruik je clear.
  8. Vraag 8. Welke aanpak is meestal het beste?



    Goed. Semantiek eerst, divs als hulpmiddel.
    Niet goed. Kies eerst de tag die inhoudelijk klopt.
  9. Vraag 9. Welke tag past het beste bij een zelfstandig blogbericht?



    Goed. Een zelfstandig bericht past vaak goed in <article>.
    Niet goed. Voor zelfstandig leesbare inhoud is <article> vaak passend.
  10. Vraag 10. Welke moderne technieken leer je straks voor layout?



    Goed. Flexbox en grid zijn moderne layout-technieken.
    Niet goed. Voor moderne layout gebruik je vooral flexbox en grid.