# Terrariumprojekt Del 1: Introduktion till HTML

> Sketchnote av [Tomomi Imura](https://twitter.com/girlie_mac)
## Quiz före föreläsning
[Quiz före föreläsning](https://ff-quizzes.netlify.app/web/quiz/15)
> Titta på videon
>
> [](https://www.youtube.com/watch?v=1TvxJKBzhyQ)
### Introduktion
HTML, eller HyperText Markup Language, är webben's 'skelett'. Om CSS 'klär upp' din HTML och JavaScript ger den liv, så är HTML kroppen i din webbapplikation. HTML:s syntax speglar till och med den idén, eftersom den innehåller taggar som "head", "body" och "footer".
I denna lektion ska vi använda HTML för att skapa 'skelettet' av vårt virtuella terrariums gränssnitt. Det kommer att ha en titel och tre kolumner: en höger- och en vänsterkolumn där de flyttbara växterna finns, och ett centralt område som kommer att vara det faktiska glasliknande terrariet. I slutet av denna lektion kommer du att kunna se växterna i kolumnerna, men gränssnittet kommer att se lite konstigt ut; oroa dig inte, i nästa avsnitt kommer du att lägga till CSS-stilar för att förbättra utseendet.
### Uppgift
På din dator, skapa en mapp som heter 'terrarium' och inuti den, en fil som heter 'index.html'. Du kan göra detta i Visual Studio Code efter att du har skapat din terrarium-mapp genom att öppna ett nytt VS Code-fönster, klicka på 'öppna mapp' och navigera till din nya mapp. Klicka på den lilla 'fil'-knappen i Explorer-panelen och skapa den nya filen:

Eller
Använd dessa kommandon i din git bash:
* `mkdir terrarium`
* `cd terrarium`
* `touch index.html`
* `code index.html` eller `nano index.html`
> index.html-filer indikerar för en webbläsare att det är standardfilen i en mapp; URL:er som `https://anysite.com/test` kan byggas med en mappstruktur som inkluderar en mapp som heter `test` med `index.html` inuti; `index.html` behöver inte visas i en URL.
---
## DocType och html-taggar
Den första raden i en HTML-fil är dess doctype. Det är lite förvånande att du måste ha denna rad längst upp i filen, men den berättar för äldre webbläsare att sidan ska renderas i standardläge, enligt den aktuella HTML-specifikationen.
> Tips: i VS Code kan du hovra över en tagg och få information om dess användning från MDN Reference-guiderna.
Den andra raden bör vara ``-taggens öppningstag, följt direkt av dess stängningstag ``. Dessa taggar är rot-elementen i ditt gränssnitt.
### Uppgift
Lägg till dessa rader längst upp i din `index.html`-fil:
```HTML
```
✅ Det finns några olika lägen som kan bestämmas genom att ställa in DocType med en frågesträng: [Quirks Mode och Standards Mode](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode). Dessa lägen användes för att stödja riktigt gamla webbläsare som inte används så mycket idag (Netscape Navigator 4 och Internet Explorer 5). Du kan hålla dig till standard doctype-deklarationen.
---
## Dokumentets 'head'
Området 'head' i HTML-dokumentet innehåller viktig information om din webbsida, även kallad [metadata](https://developer.mozilla.org/docs/Web/HTML/Element/meta). I vårt fall berättar vi för webbservern som denna sida kommer att skickas till för att renderas, dessa fyra saker:
- sidans titel
- sidmetadata inklusive:
- 'teckenuppsättning', som berättar vilken teckenkodning som används på sidan
- webbläsarinformation, inklusive `x-ua-compatible` som indikerar att IE=edge-webbläsaren stöds
- information om hur viewporten ska bete sig när den laddas. Att ställa in viewporten till att ha en initial skala på 1 kontrollerar zoomnivån när sidan först laddas.
### Uppgift
Lägg till ett 'head'-block i ditt dokument mellan öppningstaggen och stängningstaggen ``.
```html
Welcome to my Virtual Terrarium
```
✅ Vad skulle hända om du ställde in en viewport meta-tagg som denna: ``? Läs mer om [viewport](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag).
---
## Dokumentets `body`
### HTML-taggar
I HTML lägger du till taggar i din .html-fil för att skapa element på en webbsida. Varje tagg har vanligtvis en öppning och en stängningstag, som detta: `
hej
` för att indikera ett stycke. Skapa kroppsdelen av ditt gränssnitt genom att lägga till ett par ``-taggar inuti ``-taggarna; din markup ser nu ut så här:
### Uppgift
```html
Welcome to my Virtual Terrarium
```
Nu kan du börja bygga din sida. Vanligtvis använder du `
`-taggar för att skapa separata element på en sida. Vi kommer att skapa en serie `
`-element som kommer att innehålla bilder.
### Bilder
En HTML-tagg som inte behöver en stängningstag är ``-taggen, eftersom den har ett `src`-element som innehåller all information sidan behöver för att rendera objektet.
Skapa en mapp i din app som heter `images` och lägg där alla bilder från [källkodsmappen](../../../../3-terrarium/solution/images); (det finns 14 bilder av växter).
### Uppgift
Lägg till dessa växtbilder i två kolumner mellan ``-taggarna:
```html
```
> Notera: Spans vs. Divs. Divs anses vara 'block'-element, och Spans är 'inline'. Vad skulle hända om du ändrade dessa divs till spans?
Med denna markup visas växterna nu på skärmen. Det ser ganska dåligt ut, eftersom de ännu inte är stylade med CSS, och vi kommer att göra det i nästa lektion.
Varje bild har alt-text som visas även om du inte kan se eller rendera en bild. Detta är en viktig attribut att inkludera för tillgänglighet. Lär dig mer om tillgänglighet i framtida lektioner; för nu, kom ihåg att alt-attributet ger alternativ information för en bild om en användare av någon anledning inte kan se den (på grund av långsam anslutning, ett fel i src-attributet, eller om användaren använder en skärmläsare).
✅ Märkte du att varje bild har samma alt-tagg? Är detta bra praxis? Varför eller varför inte? Kan du förbättra denna kod?
---
## Semantisk markup
Generellt är det att föredra att använda meningsfull 'semantik' när du skriver HTML. Vad betyder det? Det betyder att du använder HTML-taggar för att representera typen av data eller interaktion de är designade för. Till exempel bör huvudtiteltexten på en sida använda en `
`-tagg.
Lägg till följande rad precis under din öppningstag ``:
```html
My Terrarium
```
Att använda semantisk markup, som att ha rubriker som `
` och oordnade listor som renderas som `
`, hjälper skärmläsare att navigera genom en sida. Generellt bör knappar skrivas som `
`-taggen:
```html
```
✅ Även om du har lagt till denna markup på skärmen, ser du absolut ingenting renderas. Varför?
---
## 🚀Utmaning
Det finns några roliga 'äldre' taggar i HTML som fortfarande är roliga att leka med, även om du inte bör använda föråldrade taggar som [dessa taggar](https://developer.mozilla.org/docs/Web/HTML/Element#Obsolete_and_deprecated_elements) i din markup. Kan du använda den gamla `