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
- Werk op portfolio.html en groepeer de bestaande kaartensection en projecttabel binnen main in één
div class="pagina-breedte". - De div is alleen een technisch binnenblok voor breedte en ruimte. Behoud main als de hoofdinhoud en behoud alle kaarten, afbeeldingen en tabel.
- 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
- Bekijk op dezelfde pagina de rollen van header, nav, main, de projectsection, de articles, aside en footer.
- Behoud die semantische tags. Vervang ze niet door divs om dezelfde opmaak te krijgen.
- 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
- Voeg ook op Home, Over en Contact één pagina-breedte-div binnen main om de bestaande inhoud toe.
- 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. - Verplaats de width:100%, max-width:1000px en margin:0 auto uit je main-regel naar .pagina-breedte. Verwijder die breedteregels daarna van main.
- Behoud de padding en dekkende achtergrond op main. Geef de binnenwrapper geen extra padding die de ruimte onbedoeld verdubbelt.
- 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
- Controleer of je vormgeving met de bestaande classes werkt en je hoofdonderdelen semantische tags blijven.
- Vervang eventuele eigen namen als linkerding of bovenblok door een passende class of tag, en pas CSS tegelijk aan.
- 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: leftzet het element links.float: rightzet 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
- Werk tijdelijk op over.html. Plaats een kopie van project-01.webp bij een langere alinea en geef die afbeelding class foto-links.
- Pas de float-regel uit de uitleg toe op .foto-links en gebruik margin om ruimte tussen beeld en tekst te maken.
- 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
- Vergelijk de oude tweekoloms-float uit de uitleg met je eigen tijdelijke tekstomloop.
- Je hoeft de oude float-layout niet in je site te bouwen. De hoofdindeling krijgt straks grid en de kleine onderdelen flexbox.
- 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: leftstopt naast links gefloate elementen.clear: rightstopt naast rechts gefloate elementen.clear: bothstopt naast beide kanten.- Daarna begint het element onder de float.
Actie — Alleen oefenen
- 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.
- Controleer het verschil met en zonder clear. Maak de tekst zo nodig korter om het effect te zien.
- Verwijder daarna de oefenafbeelding, alleen daarvoor gemaakte kop/class en de CSS-regels .foto-links en .nieuwe-sectie. Herstel je oorspronkelijke Over-inhoud.
- 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
- Beoordeel op je bestaande pagina's of section een inhoudelijk onderdeel en article een zelfstandig project beschrijft.
- Behoud alleen de technische wrapper die de breedte regelt. Verwijder extra divs die geen functie hebben.
- 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
clearals inhoud onder een float moet beginnen.
Actie — Controleer en rond af
- Controleer op alle vier de pagina's de vijf semantische hoofdonderdelen en één pagina-breedte-wrapper binnen main.
- Controleer dat de breedteregels niet dubbel op main én wrapper staan en dat de gewone projectkaarten nog werken.
- 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
- Rond de bestaande site af met duidelijke structuur en de gedeelde wrapperstijl. Begin geen nieuw HTML-bestand.
- Controleer dat de projectafbeeldingen, lijsten, tabel, echte links en kleurvariabelen behouden zijn.
- De volgende stap zet je bestaande menu, footer en kaarten met flexbox neer; de hoofdindeling blijft voorlopig onder elkaar staan.
Quiz
-
Vraag 1. Wat is een
<div>?
Goed. Een div is een algemene container.Niet goed. Een div heeft zelf geen inhoudelijke betekenis. -
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>. -
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. -
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. -
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. -
Vraag 6. Wat doet
clear: both?
Goed.clear: bothstopt het meelopen naast floats.Niet goed. Clear bepaalt of iets naast een float mag staan. -
Vraag 7. Welke regel laat een element onder een links gefloate afbeelding beginnen?
Goed. Metclear: left;begin je onder links gefloate elementen.Niet goed. Hiervoor gebruik jeclear. -
Vraag 8. Welke aanpak is meestal het beste?
Goed. Semantiek eerst, divs als hulpmiddel.Niet goed. Kies eerst de tag die inhoudelijk klopt. -
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. -
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.