# Terrarium Project Deel 1: Introductie tot HTML

> Sketchnote door [Tomomi Imura](https://twitter.com/girlie_mac)
## Pre-Les Quiz
[Pre-les quiz](https://ff-quizzes.netlify.app/web/quiz/15)
> Bekijk de video
>
> [](https://www.youtube.com/watch?v=1TvxJKBzhyQ)
### Introductie
HTML, of HyperText Markup Language, is het 'skelet' van het web. Als CSS je HTML 'aankleedt' en JavaScript het tot leven brengt, dan is HTML het lichaam van je webapplicatie. De syntaxis van HTML weerspiegelt dat idee, omdat het tags bevat zoals "head", "body" en "footer".
In deze les gaan we HTML gebruiken om het 'skelet' van de interface van ons virtuele terrarium op te zetten. Het zal een titel en drie kolommen hebben: een rechter- en een linker kolom waar de versleepbare planten staan, en een middengebied dat het daadwerkelijke glazen terrarium zal zijn. Aan het einde van deze les kun je de planten in de kolommen zien, maar de interface zal er een beetje vreemd uitzien; maak je geen zorgen, in het volgende deel voeg je CSS-stijlen toe om de interface er beter uit te laten zien.
### Taak
Maak op je computer een map genaamd 'terrarium' en daarin een bestand genaamd 'index.html'. Je kunt dit doen in Visual Studio Code nadat je je terrarium-map hebt gemaakt door een nieuw VS Code-venster te openen, op 'open folder' te klikken en naar je nieuwe map te navigeren. Klik op de kleine 'file'-knop in het Explorer-paneel en maak het nieuwe bestand:

Of
Gebruik deze commando's in je git bash:
* `mkdir terrarium`
* `cd terrarium`
* `touch index.html`
* `code index.html` of `nano index.html`
> index.html-bestanden geven aan een browser aan dat het het standaardbestand in een map is; URL's zoals `https://anysite.com/test` kunnen worden opgebouwd met een mapstructuur inclusief een map genaamd `test` met `index.html` erin; `index.html` hoeft niet in een URL te worden weergegeven.
---
## De DocType en html-tags
De eerste regel van een HTML-bestand is de doctype. Het is een beetje verrassend dat je deze regel helemaal bovenaan het bestand moet hebben, maar het vertelt oudere browsers dat de browser de pagina moet weergeven in een standaardmodus, volgens de huidige HTML-specificatie.
> Tip: in VS Code kun je over een tag zweven en informatie krijgen over het gebruik ervan uit de MDN Reference-gidsen.
De tweede regel moet de openingstag van `` zijn, gevolgd door de sluitingstag ``. Deze tags zijn de root-elementen van je interface.
### Taak
Voeg deze regels toe bovenaan je `index.html`-bestand:
```HTML
```
✅ Er zijn een paar verschillende modi die kunnen worden bepaald door de DocType in te stellen met een querystring: [Quirks Mode en Standards Mode](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode). Deze modi werden gebruikt om echt oude browsers te ondersteunen die tegenwoordig niet meer normaal worden gebruikt (Netscape Navigator 4 en Internet Explorer 5). Je kunt je houden aan de standaard doctype-verklaring.
---
## Het 'head'-gedeelte van het document
Het 'head'-gedeelte van het HTML-document bevat cruciale informatie over je webpagina, ook wel [metadata](https://developer.mozilla.org/docs/Web/HTML/Element/meta) genoemd. In ons geval vertellen we de webserver waaraan deze pagina wordt verzonden om te worden weergegeven, deze vier dingen:
- de titel van de pagina
- paginametadata inclusief:
- de 'character set', die aangeeft welke tekencodering wordt gebruikt op de pagina
- browserinformatie, inclusief `x-ua-compatible` die aangeeft dat de IE=edge browser wordt ondersteund
- informatie over hoe de viewport zich moet gedragen wanneer deze wordt geladen. Het instellen van de viewport met een initiële schaal van 1 controleert het zoomniveau wanneer de pagina voor het eerst wordt geladen.
### Taak
Voeg een 'head'-blok toe aan je document tussen de opening en sluiting van de ``-tags.
```html
Welcome to my Virtual Terrarium
```
✅ Wat zou er gebeuren als je een viewport meta-tag instelt zoals deze: ``? Lees meer over de [viewport](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag).
---
## Het `body`-gedeelte van het document
### HTML-tags
In HTML voeg je tags toe aan je .html-bestand om elementen van een webpagina te maken. Elke tag heeft meestal een opening en sluiting, zoals: `
hallo
` om een paragraaf aan te geven. Maak het lichaam van je interface door een set ``-tags toe te voegen binnen de ``-tagparen; je markup ziet er nu zo uit:
### Taak
```html
Welcome to my Virtual Terrarium
```
Nu kun je beginnen met het opbouwen van je pagina. Normaal gesproken gebruik je `
`-tags om de afzonderlijke elementen in een pagina te maken. We maken een reeks `
`-elementen die afbeeldingen bevatten.
### Afbeeldingen
Een HTML-tag die geen sluiting nodig heeft, is de ``-tag, omdat deze een `src`-element heeft dat alle informatie bevat die de pagina nodig heeft om het item weer te geven.
Maak een map in je app genaamd `images` en voeg daarin alle afbeeldingen toe uit de [source code folder](../../../../3-terrarium/solution/images); (er zijn 14 afbeeldingen van planten).
### Taak
Voeg die plantenafbeeldingen toe in twee kolommen tussen de ``-tags:
```html
```
> Opmerking: Spans vs. Divs. Divs worden beschouwd als 'block'-elementen en Spans als 'inline'. Wat zou er gebeuren als je deze divs transformeert naar spans?
Met deze markup verschijnen de planten nu op het scherm. Het ziet er behoorlijk slecht uit, omdat ze nog niet zijn gestyled met CSS, en dat doen we in de volgende les.
Elke afbeelding heeft alt-tekst die verschijnt, zelfs als je een afbeelding niet kunt zien of weergeven. Dit is een belangrijk attribuut om op te nemen voor toegankelijkheid. Leer meer over toegankelijkheid in toekomstige lessen; voor nu, onthoud dat het alt-attribuut alternatieve informatie biedt voor een afbeelding als een gebruiker om de een of andere reden de afbeelding niet kan bekijken (vanwege een trage verbinding, een fout in het src-attribuut, of als de gebruiker een schermlezer gebruikt).
✅ Heb je gemerkt dat elke afbeelding dezelfde alt-tag heeft? Is dit goede praktijk? Waarom wel of niet? Kun je deze code verbeteren?
---
## Semantische markup
Over het algemeen is het beter om betekenisvolle 'semantiek' te gebruiken bij het schrijven van HTML. Wat betekent dat? Het betekent dat je HTML-tags gebruikt om het type gegevens of interactie te vertegenwoordigen waarvoor ze zijn ontworpen. Bijvoorbeeld, de hoofdtekst op een pagina moet een `
`-tag gebruiken.
Voeg de volgende regel toe direct onder je opening ``-tag:
```html
My Terrarium
```
Het gebruik van semantische markup, zoals headers met `
` en ongeordende lijsten weergegeven als `
`, helpt schermlezers door een pagina te navigeren. Over het algemeen moeten knoppen worden geschreven als `
`-tag:
```html
```
✅ Hoewel je deze markup aan het scherm hebt toegevoegd, zie je absoluut niets weergegeven. Waarom?
---
## 🚀Uitdaging
Er zijn enkele 'oude' tags in HTML die nog steeds leuk zijn om mee te spelen, hoewel je geen verouderde tags zoals [deze tags](https://developer.mozilla.org/docs/Web/HTML/Element#Obsolete_and_deprecated_elements) in je markup zou moeten gebruiken. Kun je de oude `