# Terrarium-projekti Osa 1: Johdatus HTML:ään

> Sketchnote: [Tomomi Imura](https://twitter.com/girlie_mac)
## Ennakkokysely
[Ennakkokysely](https://ff-quizzes.netlify.app/web/quiz/15)
> Katso video
>
> [](https://www.youtube.com/watch?v=1TvxJKBzhyQ)
### Johdanto
HTML eli HyperText Markup Language on verkkosivujen "luuranko". Jos CSS "pukee" HTML:n ja JavaScript tuo sen eloon, HTML on verkkosovelluksesi runko. HTML:n syntaksi heijastaa tätä ajatusta, sillä se sisältää "head"-, "body"- ja "footer"-tagit.
Tässä oppitunnissa käytämme HTML:ää rakentaaksemme virtuaalisen terraariomme käyttöliittymän "luurangon". Siinä on otsikko ja kolme saraketta: oikea ja vasen sarake, joissa sijaitsevat vedettävät kasvit, sekä keskialue, joka toimii lasimaisena terraariona. Oppitunnin lopussa näet kasvit sarakkeissa, mutta käyttöliittymä näyttää hieman oudolta; älä huoli, seuraavassa osiossa lisäät CSS-tyylejä, jotta käyttöliittymä näyttää paremmalta.
### Tehtävä
Luo tietokoneellesi kansio nimeltä 'terrarium' ja sen sisälle tiedosto nimeltä 'index.html'. Voit tehdä tämän Visual Studio Codessa avaamalla uuden VS Code -ikkunan, klikkaamalla 'open folder' ja navigoimalla uuteen kansioosi. Klikkaa pientä 'file'-painiketta Explorer-paneelissa ja luo uusi tiedosto:

Tai
Käytä näitä komentoja git bashissa:
* `mkdir terrarium`
* `cd terrarium`
* `touch index.html`
* `code index.html` tai `nano index.html`
> index.html-tiedostot kertovat selaimelle, että kyseessä on kansion oletustiedosto; esimerkiksi URL-osoitteet kuten `https://anysite.com/test` voivat perustua kansiorakenteeseen, jossa on kansio nimeltä `test` ja sen sisällä `index.html`; `index.html` ei välttämättä näy URL-osoitteessa.
---
## DocType ja html-tagit
HTML-tiedoston ensimmäinen rivi on sen doctype. On hieman yllättävää, että tämä rivi täytyy olla aivan tiedoston yläosassa, mutta se kertoo vanhemmille selaimille, että sivu tulee renderöidä standarditilassa nykyisen HTML-spesifikaation mukaisesti.
> Vinkki: VS Codessa voit viedä hiiren tagin päälle ja saada tietoa sen käytöstä MDN Reference -oppaista.
Toinen rivi tulisi olla ``-tagin avaus, jota seuraa sen sulkeva tagi ``. Nämä tagit ovat käyttöliittymäsi juurielementit.
### Tehtävä
Lisää nämä rivit `index.html`-tiedostosi alkuun:
```HTML
```
✅ On olemassa muutamia eri tiloja, jotka voidaan määrittää asettamalla DocType kyselymerkkijonolla: [Quirks Mode ja Standards Mode](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode). Näitä tiloja käytettiin tukemaan todella vanhoja selaimia, joita ei nykyään juuri käytetä (kuten Netscape Navigator 4 ja Internet Explorer 5). Voit pysytellä standardin mukaisessa doctype-määrittelyssä.
---
## Dokumentin 'head'
HTML-dokumentin 'head'-alue sisältää tärkeää tietoa verkkosivustasi, jota kutsutaan myös [metatiedoiksi](https://developer.mozilla.org/docs/Web/HTML/Element/meta). Meidän tapauksessamme kerromme verkkopalvelimelle, jolle tämä sivu lähetetään renderöitäväksi, seuraavat neljä asiaa:
- sivun otsikko
- metatiedot, mukaan lukien:
- 'merkistö', joka kertoo, mitä merkistökoodausta sivulla käytetään
- selaintiedot, mukaan lukien `x-ua-compatible`, joka osoittaa, että IE=edge-selain on tuettu
- tietoa siitä, miten näkymäportin tulisi käyttäytyä, kun se ladataan. Näkymäportin asettaminen alkuasteikolle 1 hallitsee zoomaustasoa, kun sivu ladataan ensimmäisen kerran.
### Tehtävä
Lisää 'head'-lohko dokumenttiisi ``-tagien avaus- ja sulkutagien väliin.
```html
Welcome to my Virtual Terrarium
```
✅ Mitä tapahtuisi, jos asettaisit näkymäportin meta-tagin näin: ``? Lue lisää [näkymäportista](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag).
---
## Dokumentin `body`
### HTML-tagit
HTML:ssä lisäät tageja .html-tiedostoosi luodaksesi verkkosivun elementtejä. Jokaisella tagilla on yleensä avaus- ja sulkutagi, kuten `
hello
` kappaleen merkitsemiseksi. Luo käyttöliittymäsi runko lisäämällä ``-tagit ``-tagiparin sisälle; merkintäsi näyttää nyt tältä:
### Tehtävä
```html
Welcome to my Virtual Terrarium
```
Nyt voit alkaa rakentaa sivuasi. Yleensä käytät `
`-tageja luodaksesi erillisiä elementtejä sivulle. Luomme sarjan `
`-elementtejä, jotka sisältävät kuvia.
### Kuvat
Yksi HTML-tagi, joka ei tarvitse sulkutagia, on ``-tagi, koska sillä on `src`-elementti, joka sisältää kaiken tarvittavan tiedon kohteen renderöimiseksi.
Luo sovellukseesi kansio nimeltä `images` ja lisää siihen kaikki kuvat [lähdekoodikansiosta](../../../../3-terrarium/solution/images); (kansiossa on 14 kasvikuvan tiedostoa).
### Tehtävä
Lisää nämä kasvikuvat kahteen sarakkeeseen ``-tagien väliin:
```html
```
> Huom: Spanit vs. Divit. Divit ovat 'block'-elementtejä, ja Spanit ovat 'inline'-elementtejä. Mitä tapahtuisi, jos muuttaisit nämä divit spaneiksi?
Tällä merkinnällä kasvit näkyvät nyt näytöllä. Se näyttää melko huonolta, koska niitä ei ole vielä tyylitelty CSS:llä, mutta teemme sen seuraavassa oppitunnissa.
Jokaisella kuvalla on alt-teksti, joka näkyy, vaikka et voisi nähdä tai renderöidä kuvaa. Tämä on tärkeä ominaisuus saavutettavuuden kannalta. Opit lisää saavutettavuudesta tulevissa oppitunneissa; toistaiseksi muista, että alt-attribuutti tarjoaa vaihtoehtoista tietoa kuvasta, jos käyttäjä ei jostain syystä voi nähdä sitä (hitaan yhteyden, src-attribuutin virheen tai ruudunlukijan käytön vuoksi).
✅ Huomasitko, että jokaisella kuvalla on sama alt-tagi? Onko tämä hyvä käytäntö? Miksi tai miksi ei? Voitko parantaa tätä koodia?
---
## Semanttinen merkintä
Yleisesti ottaen on suositeltavaa käyttää merkityksellistä 'semantiikkaa' HTML:ää kirjoittaessa. Mitä tämä tarkoittaa? Se tarkoittaa, että käytät HTML-tageja edustamaan sitä tietotyyppiä tai vuorovaikutusta, jota varten ne on suunniteltu. Esimerkiksi sivun pääotsikon tekstin tulisi käyttää `
`-tagia.
Lisää seuraava rivi heti avaus-``-tagisi alle:
```html
My Terrarium
```
Semanttisen merkinnän käyttäminen, kuten otsikoiden merkitseminen `
`-tageilla ja järjestämättömien listojen renderöiminen `
`-tageilla, auttaa ruudunlukijoita navigoimaan sivulla. Yleisesti ottaen painikkeet tulisi kirjoittaa `
`-tagin yläpuolelle:
```html
```
✅ Vaikka lisäsit tämän merkinnän näytölle, et näe mitään renderöityvän. Miksi?
---
## 🚀Haaste
HTML:ssä on joitakin vanhoja "villikortti"-tageja, joita on edelleen hauska kokeilla, vaikka sinun ei pitäisi käyttää vanhentuneita tageja, kuten [näitä tageja](https://developer.mozilla.org/docs/Web/HTML/Element#Obsolete_and_deprecated_elements), merkinnässäsi. Voitko käyttää vanhaa `