# Progetto Terrario Parte 1: Introduzione all'HTML
![Introduzione all'HTML](../images/webdev101-html.png)
> Sketchnote di [Tomomi Imura](https://twitter.com/girlie_mac)
## Quiz Pre-Lezione
[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/15?loc=it)
### Introduzione
HTML, o HyperText Markup Language, è lo "scheletro" del web. Se CSS "veste" il proprio HTML e JavaScript lo porta in vita, HTML è il corpo della propria applicazione web. Anche La sintassi dell'HTML riflette questa idea, poiché include i tag "head" (testa), "body" (corpo) e "footer" (piè di pagina).
In questa lezione si userà l'HTML per impaginare lo "scheletro" dell'interfaccia del terrario virtuale. Avrà un titolo e tre colonne: una destra e una sinistra dove vivono le piante trascinabili e un'area centrale che sarà il vero terrario dall'aspetto di un vaso di vetro. Alla fine di questa lezione, si sarà in grado di vedere le piante nelle colonne, ma l'interfaccia apparirà un po' strana; non deve preoccupare, nella prossima sezione si aggiungeranno stili CSS all'interfaccia per renderla migliore.
### Attività
Sul proprio computer, creare una cartella chiamata "terrarium" e al suo interno un file chiamato "index.html". Puoi farlo in Visual Studio Code dopo aver creato la cartella del terrario aprendo una nuova finestra di VS Code, facendo clic su "apri cartella" e accedendo alla nuova cartella. Fare clic sul piccolo pulsante "file" nel riquadro Explorer e creare il nuovo file:
![explorer in VS Code](../images/vs-code-index.png)
Oppure
Usare questi comandi sul proprio git bash:
* `mkdir terrarium`
* `cd terrarium`
* `touch index.html`
* `code index.html` oppure `nano index.html`
> I file index.html indicano a un browser che è il file predefinito in una cartella; URL come `https://anysite.com/test` potrebbero essere creati utilizzando una struttura di cartelle che includa una cartella chiamata `test` con `index.html` al suo interno; `index.html` non deve essere visualizzato in un URL.
---
## I tag DocType e html
La prima riga di un file HTML è il suo doctype. È un po' sorprendente che sia necessario avere questa riga all'inizio del file, ma indica ai browser meno recenti che il browser deve eseguire il rendering della pagina in una modalità standard, seguendo le specifiche html correnti.
> Suggerimento: in VS Code, si può passare il mouse su un tag e ottenere informazioni sul suo utilizzo dalle guide di riferimento MDN.
La seconda riga dovrebbe essere il tag di apertura del tag ``, seguito subito dal suo tag di chiusura ``. Questi tag sono gli elementi radice dell'interfaccia.
### Attività
Aggiungere queste righe all'inizio del file `index.html` :
```HTML
```
✅ Ci sono alcune modalità differenti che possono essere determinate impostando DocType con una stringa di query: [Quirks Mode e Standards Mode](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode). Queste modalità supportano browser molto vecchi che non vengono normalmente utilizzati al giorno d'oggi (Netscape Navigator 4 e Internet Explorer 5). Ci si può attenere alla dichiarazione doctype standard.
---
## La "testa" del documento (tag head)
L'area "head" del documento HTML include informazioni cruciali sulla propria pagina web, note anche come [metadati](https://developer.mozilla.org/docs/Web/HTML/Element/meta). In questo caso, si dice al server web a cui verrà inviata questa pagina per essere renderizzata, queste quattro cose:
- il titolo della pagina
- metadati della pagina tra cui:
- l'"insieme di caratteri", che indica quale codifica dei caratteri viene utilizzata nella pagina
- informazioni sul browser, incluso `x-ua-compatibile` che indica che il browser IE=edge è supportato
- informazioni su come dovrebbe comportarsi il viewport quando viene caricato. L'impostazione della visualizzazione (viewport) in modo che abbia una scala iniziale di 1 controlla il livello di zoom quando la pagina viene caricata per la prima volta.
### Attività
Aggiungere un blocco "head" al proprio documento tra i tag di apertura e di chiusura ``.
```html
Benvenuti al mio Terrario Virtuale
```
✅ Cosa accadrebbe se il meta tag viewport viene impostato come questo: ``? Ulteriori informazioni sul [viewport](https://developer.mozilla.org/docs/Mozilla/Mobile/Viewport_meta_tag).
---
## Il corpo (`body`) del documento
### Etichette HTML
In HTML, si aggiungono tag al proprio file .html per creare elementi di una pagina web. Ogni tag di solito ha un tag di apertura e chiusura, come questo: `
ciao
` per indicare un paragrafo. Il corpo dell'interfaccia si crea aggiungendo una coppia di tag `` all'interno della coppia di tag ``; il markup (marcatura) ora ha questo aspetto:
### Attività
```html
Benvenuti al mio Terrario Virtuale
```
Ora è possibile iniziare a costruire la propria pagina. Normalmente, si usano i tag `
` per creare elementi separati in una pagina. Verranno creati una serie di elementi `
` che conterranno immagini.
### Immagini
Un tag html che non necessita di un tag di chiusura è il tag ``, perché ha un elemento `src` che contiene tutte le informazioni di cui la pagina ha bisogno per eseguire il rendering dell'elemento.
Creare una cartella nella propria app chiamata `images` e in quella aggiungere tutte le immagini nella [cartella del codice sorgente](../../solution/images); (ci sono 14 immagini di piante).
### Attività
Aggiungere quelle immagini di piante nelle due colonne tra i tag ``:
```html
```
> Nota: Span contro Div. I div sono considerati elementi "blocco" e gli span sono "in linea". Cosa succederebbe se si trasformassero questi div in span?
Con questo markup, le piante ora vengono visualizzate sullo schermo. Sembra piuttosto brutto, perché non hanno ancora lo stile utilizzando CSS e verrà fatto nella prossima lezione.
Ogni immagine ha un testo alternativo che apparirà anche se non è possibile vedere o renderizzare un'immagine. Questo è un attributo importante da includere per l'accessibilità. Ulteriori informazioni sull'accessibilità nelle lezioni future; per ora, occorre ricordare che l'attributo alt fornisce informazioni alternative per un'immagine se un utente per qualche motivo non può visualizzarla (a causa di una connessione lenta, un errore nell'attributo src o se l'utente utilizza un lettore di schermo).
✅ Si è notato che ogni immagine ha lo stesso tag alt? È una buona pratica? Se sì, perché? Se no, perché? Si può migliorare questo codice?
---
## Markup semantico
In generale, è preferibile utilizzare una "semantica" significativa quando si scrive HTML. Cosa significa? Significa che si utilizzano i tag HTML per rappresentare il tipo di dati o interazione per cui sono stati progettati. Ad esempio, il testo del titolo principale di una pagina dovrebbe utilizzare un tag `
`.
Aggiungere la seguente riga proprio sotto il tag di apertura ` `:
```html
My Terrarium
```
L'utilizzo di markup semantico tipo avere delle intestazioni come `
` e il rendering di elenchi non ordinati come `
` aiuta i lettori di schermo a navigare in una pagina. In generale, i pulsanti dovrebbero essere scritti come `
`:
```html
```
✅ Anche se questo markup è stato aggiunto allo schermo, non si assolutamente nulla di renderizzato. Perché?
---
## 🚀 Sfida
Ci sono alcuni "vecchi" selvaggi tag in HTML con cui è ancora divertente giocare, anche se non si dovrebero usare tag deprecati come [questi tag](https://developer.mozilla.org/docs/Web/HTML/Element#Obsolete_and_deprecated_elements) nel proprio markup. Tuttavia, si può usare il vecchio tag `