Inhoudsopgave
- Les 2
- Semantische tags
- Quiz over semantische HTML-tags
- Werken met de inspector
- CSS selectors
- Absolute units en relatieve units
- Opdracht: Top 3
Er zijn in totaal meer dan 100 HTML-tags en slechts twee ervan zijn niet semantisch: <div>
en <span>
. Ze zeggen
namelijk niets over de soort inhoud die erin staat. Je mag ze dan ook alleen gebruiken wanneer je het puur nodig hebt
voor de styling van je pagina en er geen semantisch alternatief is.
Er zijn drie belangrijke redenen waarom je gebruik moet maken van semantische tags:
- Toegankelijkheid: screenreaders kunnen zo de webpagina beter interpreteren, waardoor slechtzienden een betere ervaring hebben op jouw webpagina;
- SEO: dit staat voor Search Engine Optimization, oftewel zo goed mogelijk gevonden worden door zoekmachines, zoals Google;
- Leesbaarheid voor developers.
Hieronder volgt een lijstje met semantische tags die je gebruikt om structuur aan de pagina te geven. Dit zijn niet alle tags, maar wel de veel voorkomende.
Tag | Omschrijving |
---|---|
<header> |
Definieert inhoud die moet worden beschouwd als de inleidende informatie van een pagina of sectie |
<nav> |
Wordt gebruikt voor navigatielinks, oftewel het menu. Het kan worden geplaatst binnen de <header> , maar mag ook daarbuiten worden geplaatst. Nagenoeg iedere webpagina heeft een hoofdmenu, maar soms heb je ook een secundair menu, bijvoorbeeld in de <footer> |
<main> |
Bevat de hoofdinhoud van een pagina. Hiervan mag er slechts één tag per pagina zijn. |
<footer> |
Je gebruikt <footer> altijd onderaan een pagina. Het is de afsluiter van de pagina en bevat meestal contactgegevens, copyrightinformatie en wat sitenavigatie. |
<section> |
Je gebruikt <section> om een webpagina op te splitsen in afzonderlijke secties gerelateerd aan het element waarin ze staan. Dus stel, je hebt een webpagina die gaat over jouw ervaring met een game, dan zou een sectie kunnen gaan over de graphics en een andere over de gameplay; twee verschillende onderwerpen, maar gerelateerd aan hetzelfde onderwerp: de game. Een sectie zou je zelf ook weer kunnen opsplitsen. De sectie over gameplay zou bijvoorbeeld verdeeld kunnen worden in een sectie wat er goed is aan de gameplay, en een sectie wat er niet goed is. |
<article> |
Een <article> gebruik je om een stukje content te groeperen dat zelfstandig leesbaar is. Voorbeelden hiervan zijn: een forumbericht, een tijdschrift- of krantenartikel, of een blogbericht, een productkaart, een door een gebruiker ingediende opmerking, een interactieve widget of gadget, of enig ander onafhankelijk inhoudsitem. |
<aside> |
Wordt gebruikt om content weer te geven die indirect gerelateerd is aan de hoofdinhoud van de <section> of <article> waarin die geplaatst is. Ook kan die daarbuiten worden geplaatst, bijvoorbeeld direct in de <body> , dan moet de content gerelateerd zijn aan de website zelf, bijvoorbeeld tweets van de auteur, aanvullende navigatie, laatste blogberichten, laatste opmerkingen, etc. Let op: de <aside> is iets anders dan een sidebar. Lees meer |
⚠️ Let op: de tag<div>
is dus niet semantisch. Je mag hem wel gebruiken binnen semantische tags als<section>
, maar niet ter vervanging ervan.
De grote valkuil van het gebruiken van semantische tags, is dat je ze gebruikt voor het uiterlijk dat ze standaard
hebben. Zo is een <h1>
bijvoorbeeld standaard groter dan een <h6>
, dus de valkuil is om de heading te gebruiken die
het meest
past bij het uiterlijk dat jij zoekt, maar dat is dus niet de bedoeling. Dus onthoudt:
⚠️ Je mag een tag nooit gebruiken vanwege het standaard uiterlijk. Nooit!
Wanneer mag je een tag dan wel gebruiken? Wanneer het de type content representeert die het moet zijn. Is het de
hoofdtitel? Dan gebruik je <h1>
. Is het de titel daaronder? Dan gebruik je <h2>
, etc.
De volgende twee tags worden ook vaak "misbruikt" vanwege het standaard uiterlijk die ze krijgen, maar gebruik ze dus
alleen voor de inhoudelijke waarde die het heeft.
Tag | Omschrijving | Voorbeeld in HTML | Eindresultaat |
---|---|---|---|
<strong> |
Nadruk leggen op een gedeelte van de tekst, omdat deze belangrijk of urgent is. | <p> Voordat hij naar binnen ging, las hij de waarschuwing bij de ingang: <strong> Let op! Vuurspuwende draak verderop.</strong></p> |
Voordat hij naar binnen ging, las hij de waarschuwing bij de ingang: Let op! Vuurspuwende draak verderop. |
<em> |
Wanneer je op een gedeelte van de tekst verbaal de nadruk wilt leggen, vaak één woord. Deze is ook gebruikt in de waarschuwing die boven deze tabel is gegeven over dat je een tag nooit mag gebruiken vanwege het standaard uiterlijk. | <p> Dit zal <em> heel</em> erg gevaarlijk worden.</p> |
Dit zal heel erg gevaarlijk worden. |
Klik hier om de quiz over semantische HTML-tags te doen
Hieronder volgt eerst een uitleg in het gebruik van de inspector. Doorloop dit en voer vervolgens de opdrachten uit.
- Open de inspector op een specifiek HTML-element door met de rechter muistoets op dat element te klikken en vervolgens
op Inspecteren te klikken;
- Ook is de inspector te openen met de sneltoets ⌥⌘i op Mac en F12 op Windows;
- Van het geselecteerde element zie je ook alle bijbehorende CSS staan. Deze CSS is in de inspector aan te passen en dit
is dan direct zichtbaar in de browser. Zo kan je spelen met de waardes en real-time wijzingen zien om het ontwerp te
bepalen. Dit noemen we
Designing in the browser
;- Let op: wanneer je CSS in de inspector wijzigt, verandert het niet in de bestanden in Visual Studio Code. Dit moet je handmatig wijzigen;
Nu je hebt geleerd hoe je de inspector opent en gebruikt wordt het tijd om deze te gaan gebruiken! Ga naar een website die jij vaak bezoekt. Deze kan over jouw hobby gaan, maar het kan ook die van een supermarkt zijn, dat maakt niet uit. Open de inspector en voer de volgende opdrachten daarin uit:
- Pas van minimaal 3 teksten de kleur aan;
- Pas van minimaal 3 teksten het lettertype aan;
- Pas van minimaal 3 elementen de achtergrondkleur aan;
- Pas de achtergrondkleur van de gehele webpagina aan;
Met CSS kun je de HTML vormgeven, zoals je vorige les ook al hebt gedaan. Om dit te kunnen doen moet je echter wel eerst aangeven op welke HTML-elementen die vormgeving van toepassing is. Je moet de elementen zogezegd selecteren
.
Er zijn veel verschillende manieren om HTML-elementen te selecteren en hieronder vind je de meestgebruikte CSS selectors
.
Naam | Omschrijving | Voorbeeld 1 | Voorbeeld 2 |
---|---|---|---|
Element selector | Selecteer op HTML-tag | h1 | p |
Class selector | Selecteer op class | .button | .left-column |
ID selector | Selecteer op ID | #my-hobbies | #about-me |
Descendant selector | Selecteer alles binnen een parent (in voorbeeld 1 iedere p in iedere section ) |
section p | main .button |
Compound selector | Selecteer elementen die aan meerdere voorwaarden voldoet (in voorbeeld 1 iedere p die óók de class highlight heeft. |
p.highlight | .button.success |
Pseudo-class selector | Selecteer op pseudo-class die automatisch door de browser wordt gegeven, bijvoorbeeld wanneer je met je muis ergens overheen gaat. | .button:hover | |
Selector list | Wanneer meerdere selectors dezelfde vormgeving moeten hebben, dan kan je deze scheiden met een komma. | h1, h2, h3, h4, h5, h6 | .column-left, .column-right |
Universal selector | Selecteert alle elementen. Is ook te gebruiken in een descendant selector (in voorbeeld 2 worden alle children in iedere section geselecteerd). |
* | section * |
Extra hulpbronnen
CSS units bepalen de afmetingen en posities van elementen op een webpagina. Denk hierbij aan het instellen van de width
en height
, maar bijvoorbeeld ook aan font-size
, padding
en margin
.
In dit hoofdstuk zul je leren over de verschillende soorten units en wanneer je welke moet gebruiken.
Absolute units hebben een vaste grootte, ongeacht de context waarin ze worden gebruikt. Dit betekent dat de waarde die je instelt altijd dezelfde blijft, ongeacht de schermgrootte of andere factoren.
De meestgebruikte absolute unit is px
. Gebruik px
voor kleine, specifieke afmetingen die consistent moeten zijn, zoals icon-grootte of fijne details.
De voor- en nadelen hiervan zijn:
- Voordeel: Je hebt zekerheid over de afmeting van een element, omdat deze nooit veranderd.
- Nadeel: Het voordeel is echter ook meteen het nadeel: ze schalen niet op verschillende apparaten en schermformaten. Dit kan resulteren in slechte weergave op kleinere of grotere schermen.
Je kan dus op de pixel nauwkeurig een element instellen, maar de kans is groot dat deze instellingen op een groter of kleiner apparaat niet meer kloppen. Bedenk dus altijd goed:
Gebruik altijd relatieve units, behalve wanneer het niet anders kan.
Relatieve units geven een grootte aan die afhankelijk is van een andere grootte, zoals de grootte van het parent-element of van het scherm van de browser (dit noemen we de viewport
). Ze maken het mogelijk om flexibele en responsieve ontwerpen te creëren. De voor- en nadelen hiervan zijn:
- Voordeel: Flexibel en responsief, geschikt voor verschillende schermformaten. Ze passen zich aan de context aan.
- Nadeel: Het is minder geschikt voor gedetailleerde afmetingen, zoals die van icons.
Hieronder vind je de tabel met de meestgebruikte units.
Naam unit | Type | Omschrijving | Voorbeeld |
---|---|---|---|
px |
Absoluut | Hiermee bepaal je exact hoeveel pixels op je scherm er gebruikt moeten worden.px wanneer geen van onderstaande volstaat. |
width: 200px; |
% |
Relatief | Hiermee wordt de waarde bepaald op basis van de breedte of hoogte van de parent . |
width: 100%; |
vw |
Relatief | Hiermee wordt de waarde bepaald op basis van de breedte van de viewport (het zichtbare deel van de browser). |
width: 50vw; |
vh |
Relatief | Hiermee wordt de waarde bepaald op basis van de hoogte van de viewport (het zichtbare deel van de browser). |
height: 100vh; |
rem |
Relatief | Hiermee wordt de waarde bepaald op basis van de root font-size , oftewel de font-size die op de <html> staat ingesteld. Gebruik voor font-size altijd rem . |
font-size: 1.5rem; |
em |
Relatief | Hiermee wordt de waarde bepaald op basis van de font-size van het parent-element.rem dan em omdat die makkelijker te gebruiken is. |
font-size: 2em; |
De vraag die je jezelf iedere keer weer moet stellen is:
Op basis van wat moet ik de grootte bepalen?
- Stel je wilt de
width
van eensection
instellen. Moet deze dan relatief zijn aan de parent (%
) of aan het hele scherm (vw
)? - Of je wilt de
height
van deheader
instellen. Moet deze dan relatief zijn aan de hoogte van het scherm (vh
) of moet deze altijd hetzelfde zijn op ieder scherm (px
)?
Door deze vragen te beantwoorden, kun je de juiste CSS units kiezen en ervoor zorgen dat je ontwerp zowel flexibel als consistent is op verschillende apparaten en schermformaten. Experimenteer met verschillende units om te begrijpen hoe ze zich gedragen in verschillende situaties en kies de meest geschikte unit voor elke specifieke toepassing.
Laten we eens kijken naar een voorbeeld van een aantal units: px, % en vw. Hieronder zie je een screenshot van een webpagina. Hierop staat een section
met een rode border met daarin drie div
s. Dit geeft de volgende HTML:
<section>
<div class="pixels">50px</div>
<div class="percentage">50%</div>
<div class="viewport-width">50vw</div>
</section>
In de CSS staat het volgende ingesteld:
- De section heeft een
width
van100%
; - De eerste
div
heeft eenwidth
van50px
en neemt dus 50 pixels van het scherm in beslag; - De tweede
div
heeft eenwidth
van50%
en is dus de helft van de breedte van zijn parent (dus desection
); - De derde
div
heeft eenwidth
van50vw
en is dus de helft van de viewport (dus de breedte van de browser).
Wat zou er gebeuren wanneer de section
smaller zou worden? Het enige wat in het screenshot hieronder is aangepast is de width
van de section
, namelijk naar 33%. Het volgende valt op:
- De eerste div blijft nog steeds exact 50 pixels breed;
- De tweede div is smaller geworden, doordat zijn parent (de
section
) smaller is geworden. Hij is echter nog steeds precies de helft van zijn parent; - De derde div is niet smaller geworden, maar is even breed gebleven. Dit komt omdat de viewport (dus de browser) nog steeds dezelfde breedte heeft.
Vorige les heb je een project aangemaakt voor dit vak, waarschijnlijk heb je deze frontend-development
genoemd. Maak
hierin een nieuwe map aan met de naam top3
(zonder spaties) en zet de basisstructuur neer, zoals uitgelegd
in opdracht 1d van vorige les. De komende drie
opdrachten maak je in deze map, dus je breidt jouw webpagina met iedere opdracht uit.
Bouw vervolgens het volgende ontwerp na (klik op de afbeelding om te vergroten).
Je mag je eigen top 3 bedenken, maar gebruik verder testteksten. De focus ligt in deze opdracht niet op de inhoud,
maar op de code.
Je hebt hier het volgende voor nodig:
HTML | CSS | Gebruikte kleuren |
---|---|---|
header | - | - |
main | ||
footer | ||
nav | ||
section | ||
h1 | ||
h2 | ||
p | ||
a |
Hulpbronnen opdracht 1
- Instructie CMGT-dag over structuur aanbrengen (de video start op 02:40, bekijk tot 08:00, de rest is niet van toepassing voor deze opdracht)
- Cheatsheet HTML & CSS
- Wireframe basisstructuur HTML
Breidt jouw webpagina uit door het volgende ontwerp na te bouwen (klik op de afbeelding om te vergroten).
Je hebt hier het volgende voor nodig:
HTML | CSS | Gebruikte kleuren |
---|---|---|
- | Selectors o.b.v. tag | #B0DCFF |
Selectors o.b.v. class | #FFEDAD | |
font-family (Arial) | #000000 | |
font-size | ||
line-height | ||
color | ||
background-color | ||
border |
Hulpbronnen opdracht 2
- Cheatsheet HTML & CSS
- Introductievideo CSS (bekijk tot 11:00, het deel erna is niet van toepassing voor dit vak)
Elementen hebben een tekstkleur en een achtergrondkleur. Deze kan je op verschillende manieren bepalen:
section { /* Tekstkleur bepalen */ color: aliceblue; /* Kleur naam */ color: #FFFFFF; /* Hexadecimale kleur */ color: rgb(255, 255, 255); /* RGB kleur */ color: rgba(255, 255, 255, 0.5); /* RGB kleur met transparantie */ /* Achtergrond bepalen */ background-color: darkblue; /* Kleur naam */ background-color: #FFFFFF; /* Hexadecimale kleur */ background-color: rgb(255, 255, 255); /* RGB kleur */ background-color: rgba(255, 255, 255, 0.5); /* RGB kleur met >transparantie */ }
Breidt jouw webpagina uit door het volgende ontwerp na te bouwen (klik op de afbeelding om te vergroten).
Je hebt hier het volgende voor nodig:
HTML | CSS | Gebruikte kleuren |
---|---|---|
- | padding | - |
margin | ||
text-align |
Hulpbronnen opdracht 3
Breidt jouw webpagina uit door gebruik te maken van absoliute en relatieve units. Voer de volgende stappen uit:
- Zorg ervoor dat de
<header>
de helft van de hoogte van het scherm is; - Voeg de afbeeldingen van de Pokémon toe in een wit vierkant van 150px. Zorg ervoor dat de afbeelding altijd zo breed is als het vierkant (de hoogte groeit dan automatisch mee). De benodigde afbeeldingen staan in de map
les2/resources
.
Je hebt hier het volgende voor nodig:
HTML | CSS | Gebruikte kleuren |
---|---|---|
- | vh | - |
px | ||
% | ||
padding |
Wanneer je de vorige opdrachten hebt afgerond, breng dan extra styling toe aan jouw pagina door de volgende wireframe na te bouwen. Hierbij krijg je op de kleurcodes na geen hints, dus je moet het zelf op het blote oog nabouwen. Je mag ook je eigen kleuren kiezen!
⚠️ Kijk goed naar de details in het ontwerp en neem dit precies zo over.
HTML | CSS | Gebruikte kleuren |
---|---|---|
??? | ??? | #B0DCFF |
#000000 | ||
#FFEDAD | ||
#FFD745 | ||
#49AFFF |
Ben je toe aan nog meer uitdaging? Bouw dan het volgende ontwerp na. Ook bij deze opdracht mag je zelf de kleuren kiezen, of de kleuren gebruiken die hieronder staan.
⚠️ Kijk goed naar de details in het ontwerp en neem dit precies zo over.
De benodigde afbeeldingen staan in de map les2/resources
.
HTML | CSS | Gebruikte kleuren |
---|---|---|
??? | ??? | #DCE1DE |
#000000 | ||
#1F2421 | ||
#FFFFFF | ||
#20BF55 |