# Έργο Terrarium Μέρος 1: Εισαγωγή στο HTML

> Σημειώσεις από [Tomomi Imura](https://twitter.com/girlie_mac)
## Ερωτηματολόγιο πριν το μάθημα
[Ερωτηματολόγιο πριν το μάθημα](https://ff-quizzes.netlify.app/web/quiz/15)
> Δείτε το βίντεο
>
> [](https://www.youtube.com/watch?v=1TvxJKBzhyQ)
### Εισαγωγή
Το HTML, ή HyperText Markup Language, είναι ο 'σκελετός' του διαδικτύου. Αν το CSS 'ντύνει' το HTML και το JavaScript του δίνει ζωή, τότε το HTML είναι το σώμα της διαδικτυακής σας εφαρμογής. Η σύνταξη του HTML αντικατοπτρίζει αυτή την ιδέα, καθώς περιλαμβάνει ετικέτες όπως "head", "body" και "footer".
Σε αυτό το μάθημα, θα χρησιμοποιήσουμε το HTML για να σχεδιάσουμε τον 'σκελετό' της διεπαφής του εικονικού terrarium μας. Θα έχει έναν τίτλο και τρεις στήλες: μια δεξιά και μια αριστερή στήλη όπου θα βρίσκονται τα φυτά που μπορούν να μετακινηθούν, και μια κεντρική περιοχή που θα είναι το ίδιο το terrarium που μοιάζει με γυαλί. Μέχρι το τέλος αυτού του μαθήματος, θα μπορείτε να δείτε τα φυτά στις στήλες, αλλά η διεπαφή θα φαίνεται λίγο περίεργη. Μην ανησυχείτε, στην επόμενη ενότητα θα προσθέσετε στυλ CSS για να βελτιώσετε την εμφάνιση της διεπαφής.
### Εργασία
Στον υπολογιστή σας, δημιουργήστε έναν φάκελο που ονομάζεται 'terrarium' και μέσα σε αυτόν ένα αρχείο που ονομάζεται 'index.html'. Μπορείτε να το κάνετε αυτό στο Visual Studio Code αφού δημιουργήσετε τον φάκελο terrarium, ανοίγοντας ένα νέο παράθυρο του VS Code, κάνοντας κλικ στο 'open folder' και πλοηγούμενοι στον νέο σας φάκελο. Κάντε κλικ στο μικρό κουμπί 'file' στον πίνακα Explorer και δημιουργήστε το νέο αρχείο:

Ή
Χρησιμοποιήστε αυτές τις εντολές στο git bash:
* `mkdir terrarium`
* `cd terrarium`
* `touch index.html`
* `code index.html` ή `nano index.html`
> Τα αρχεία index.html υποδεικνύουν σε έναν περιηγητή ότι είναι το προεπιλεγμένο αρχείο σε έναν φάκελο. URLs όπως `https://anysite.com/test` μπορεί να δημιουργούνται χρησιμοποιώντας μια δομή φακέλων που περιλαμβάνει έναν φάκελο που ονομάζεται `test` με `index.html` μέσα του. Το `index.html` δεν χρειάζεται να εμφανίζεται στο URL.
---
## Το DocType και οι ετικέτες html
Η πρώτη γραμμή ενός αρχείου HTML είναι το doctype. Είναι λίγο εκπληκτικό ότι πρέπει να έχετε αυτή τη γραμμή στην κορυφή του αρχείου, αλλά ενημερώνει τους παλαιότερους περιηγητές ότι πρέπει να αποδώσουν τη σελίδα σε τυπική λειτουργία, ακολουθώντας την τρέχουσα προδιαγραφή html.
> Συμβουλή: στο VS Code, μπορείτε να περάσετε το ποντίκι πάνω από μια ετικέτα και να λάβετε πληροφορίες για τη χρήση της από τους οδηγούς αναφοράς MDN.
Η δεύτερη γραμμή πρέπει να είναι η ετικέτα `` που ανοίγει, ακολουθούμενη αμέσως από την ετικέτα που κλείνει ``. Αυτές οι ετικέτες είναι τα βασικά στοιχεία της διεπαφής σας.
### Εργασία
Προσθέστε αυτές τις γραμμές στην κορυφή του αρχείου `index.html` σας:
```HTML
```
✅ Υπάρχουν μερικές διαφορετικές λειτουργίες που μπορούν να καθοριστούν ορίζοντας το DocType με μια συμβολοσειρά ερωτήματος: [Λειτουργία Quirks και Λειτουργία Standards](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode). Αυτές οι λειτουργίες χρησιμοποιούνταν για την υποστήριξη πολύ παλιών περιηγητών που δεν χρησιμοποιούνται πλέον (Netscape Navigator 4 και Internet Explorer 5). Μπορείτε να παραμείνετε στη δήλωση doctype standard.
---
## Η 'κεφαλή' του εγγράφου
Η περιοχή 'head' του εγγράφου HTML περιλαμβάνει κρίσιμες πληροφορίες για τη διαδικτυακή σας σελίδα, γνωστές και ως [μεταδεδομένα](https://developer.mozilla.org/docs/Web/HTML/Element/meta). Στην περίπτωσή μας, ενημερώνουμε τον διαδικτυακό διακομιστή στον οποίο θα σταλεί αυτή η σελίδα για να αποδοθεί, για τα εξής τέσσερα πράγματα:
- τον τίτλο της σελίδας
- μεταδεδομένα της σελίδας, συμπεριλαμβανομένων:
- του 'character set', που ενημερώνει για την κωδικοποίηση χαρακτήρων που χρησιμοποιείται στη σελίδα
- πληροφορίες για τον περιηγητή, συμπεριλαμβανομένου του `x-ua-compatible` που υποδεικνύει ότι υποστηρίζεται ο περιηγητής IE=edge
- πληροφορίες για το πώς πρέπει να συμπεριφέρεται το viewport όταν φορτώνεται. Ορίζοντας το viewport να έχει αρχική κλίμακα 1 ελέγχεται το επίπεδο ζουμ όταν η σελίδα φορτώνεται για πρώτη φορά.
### Εργασία
Προσθέστε ένα μπλοκ 'head' στο έγγραφό σας ανάμεσα στις ετικέτες `` που ανοίγουν και κλείνουν.
```html
Welcome to my Virtual Terrarium
```
✅ Τι θα συνέβαινε αν ορίζατε μια ετικέτα meta viewport όπως αυτή: ``; Διαβάστε περισσότερα για το [viewport](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag).
---
## Το `body` του εγγράφου
### Ετικέτες HTML
Στο HTML, προσθέτετε ετικέτες στο αρχείο .html για να δημιουργήσετε στοιχεία μιας διαδικτυακής σελίδας. Κάθε ετικέτα συνήθως έχει μια ετικέτα που ανοίγει και μια που κλείνει, όπως αυτή: `
hello
` για να υποδείξετε μια παράγραφο. Δημιουργήστε το σώμα της διεπαφής σας προσθέτοντας ένα σύνολο ετικετών `` μέσα στο ζεύγος ετικετών ``; η σήμανσή σας τώρα μοιάζει με αυτή:
### Εργασία
```html
Welcome to my Virtual Terrarium
```
Τώρα, μπορείτε να αρχίσετε να δημιουργείτε τη σελίδα σας. Συνήθως, χρησιμοποιείτε ετικέτες `
` για να δημιουργήσετε τα ξεχωριστά στοιχεία σε μια σελίδα. Θα δημιουργήσουμε μια σειρά από στοιχεία `
` που θα περιέχουν εικόνες.
### Εικόνες
Μια ετικέτα html που δεν χρειάζεται ετικέτα κλεισίματος είναι η ετικέτα ``, επειδή έχει ένα στοιχείο `src` που περιέχει όλες τις πληροφορίες που χρειάζεται η σελίδα για να αποδώσει το αντικείμενο.
Δημιουργήστε έναν φάκελο στην εφαρμογή σας που ονομάζεται `images` και σε αυτόν προσθέστε όλες τις εικόνες από τον [φάκελο πηγαίου κώδικα](../../../../3-terrarium/solution/images); (υπάρχουν 14 εικόνες φυτών).
### Εργασία
Προσθέστε αυτές τις εικόνες φυτών σε δύο στήλες ανάμεσα στις ετικέτες ``:
```html
```
> Σημείωση: Spans vs. Divs. Τα Divs θεωρούνται 'block' στοιχεία, ενώ τα Spans είναι 'inline'. Τι θα συνέβαινε αν μετατρέπατε αυτά τα divs σε spans;
Με αυτή τη σήμανση, τα φυτά εμφανίζονται τώρα στην οθόνη. Φαίνεται αρκετά άσχημο, επειδή δεν έχουν ακόμα στυλ χρησιμοποιώντας CSS, και θα το κάνουμε αυτό στο επόμενο μάθημα.
Κάθε εικόνα έχει εναλλακτικό κείμενο που θα εμφανίζεται ακόμα και αν δεν μπορείτε να δείτε ή να αποδώσετε μια εικόνα. Αυτό είναι ένα σημαντικό χαρακτηριστικό για την προσβασιμότητα. Μάθετε περισσότερα για την προσβασιμότητα σε μελλοντικά μαθήματα. Προς το παρόν, θυμηθείτε ότι το χαρακτηριστικό alt παρέχει εναλλακτικές πληροφορίες για μια εικόνα αν ένας χρήστης για κάποιο λόγο δεν μπορεί να τη δει (λόγω αργής σύνδεσης, σφάλματος στο χαρακτηριστικό src ή αν ο χρήστης χρησιμοποιεί αναγνώστη οθόνης).
✅ Παρατηρήσατε ότι κάθε εικόνα έχει την ίδια ετικέτα alt; Είναι αυτή καλή πρακτική; Γιατί ή γιατί όχι; Μπορείτε να βελτιώσετε αυτόν τον κώδικα;
---
## Σημασιολογική σήμανση
Γενικά, είναι προτιμότερο να χρησιμοποιείτε ουσιαστική 'σημασιολογία' όταν γράφετε HTML. Τι σημαίνει αυτό; Σημαίνει ότι χρησιμοποιείτε ετικέτες HTML για να αντιπροσωπεύσετε τον τύπο δεδομένων ή αλληλεπίδρασης για τον οποίο σχεδιάστηκαν. Για παράδειγμα, το κύριο κείμενο τίτλου σε μια σελίδα πρέπει να χρησιμοποιεί μια ετικέτα `
`.
Προσθέστε την παρακάτω γραμμή ακριβώς κάτω από την ετικέτα `` που ανοίγει:
```html
My Terrarium
```
Η χρήση σημασιολογικής σήμανσης, όπως το να είναι οι επικεφαλίδες `
` και οι μη ταξινομημένες λίστες να αποδίδονται ως `
`, βοηθά τους αναγνώστες οθόνης να πλοηγούνται σε μια σελίδα. Γενικά, τα κουμπιά πρέπει να γράφονται ως `
`:
```html
```
✅ Παρόλο που προσθέσατε αυτή τη σήμανση στην οθόνη, δεν βλέπετε απολύτως τίποτα να αποδίδεται. Γιατί;
---
## 🚀Πρόκληση
Υπάρχουν μερικές 'παλιές' ετικέτες στο HTML που είναι ακόμα διασκεδαστικές να πειραματιστείτε, αν και δεν πρέπει να χρησιμοποιείτε καταργημένες ετικέτες όπως [αυτές οι ετικέτες](https://developer.mozilla.org/docs/Web/HTML/Element#Obsolete_and_deprecated_elements) στη σήμανσή σας. Παρ' όλα αυτά, μπορείτε να χρησιμοποιήσετε την παλιά ετικέτα `