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

> Σκίτσο από την [Tomomi Imura](https://twitter.com/girlie_mac)
Το HTML, ή HyperText Markup Language, είναι η βάση κάθε ιστοσελίδας που έχετε επισκεφθεί ποτέ. Σκεφτείτε το HTML σαν τον σκελετό που δίνει δομή στις ιστοσελίδες – καθορίζει πού πηγαίνει το περιεχόμενο, πώς οργανώνεται και τι αντιπροσωπεύει κάθε κομμάτι. Ενώ το CSS αργότερα θα "ντύσει" το HTML με χρώματα και διατάξεις, και το JavaScript θα το ζωντανέψει με διαδραστικότητα, το HTML παρέχει τη βασική δομή που κάνει όλα τα υπόλοιπα δυνατά.
Σε αυτό το μάθημα, θα δημιουργήσετε τη δομή HTML για μια εικονική διεπαφή terrarium. Αυτό το πρακτικό έργο θα σας διδάξει βασικές έννοιες του HTML ενώ θα δημιουργείτε κάτι οπτικά ελκυστικό. Θα μάθετε πώς να οργανώνετε το περιεχόμενο χρησιμοποιώντας σημασιολογικά στοιχεία, να δουλεύετε με εικόνες και να δημιουργείτε τη βάση για μια διαδραστική εφαρμογή ιστού.
Μέχρι το τέλος αυτού του μαθήματος, θα έχετε μια λειτουργική σελίδα HTML που θα εμφανίζει εικόνες φυτών σε οργανωμένες στήλες, έτοιμη για στυλιζάρισμα στο επόμενο μάθημα. Μην ανησυχείτε αν φαίνεται απλή στην αρχή – αυτό ακριβώς πρέπει να κάνει το HTML πριν το CSS προσθέσει την οπτική τελειοποίηση.
## Ερωτηματολόγιο πριν το μάθημα
[Ερωτηματολόγιο πριν το μάθημα](https://ff-quizzes.netlify.app/web/quiz/15)
> 📺 **Παρακολουθήστε και Μάθετε**: Δείτε αυτό το χρήσιμο βίντεο επισκόπησης
>
> [](https://www.youtube.com/watch?v=1TvxJKBzhyQ)
## Ρύθμιση του Έργου σας
Πριν βουτήξουμε στον κώδικα HTML, ας δημιουργήσουμε έναν σωστό χώρο εργασίας για το έργο terrarium σας. Η δημιουργία μιας οργανωμένης δομής αρχείων από την αρχή είναι μια κρίσιμη συνήθεια που θα σας εξυπηρετήσει καλά καθ' όλη τη διάρκεια της πορείας σας στην ανάπτυξη ιστού.
### Εργασία: Δημιουργήστε τη Δομή του Έργου σας
Θα δημιουργήσετε έναν ειδικό φάκελο για το έργο terrarium και θα προσθέσετε το πρώτο σας αρχείο HTML. Ακολουθούν δύο προσεγγίσεις που μπορείτε να χρησιμοποιήσετε:
**Επιλογή 1: Χρήση του Visual Studio Code**
1. Ανοίξτε το Visual Studio Code
2. Κάντε κλικ στο "File" → "Open Folder" ή χρησιμοποιήστε `Ctrl+K, Ctrl+O` (Windows/Linux) ή `Cmd+K, Cmd+O` (Mac)
3. Δημιουργήστε έναν νέο φάκελο με όνομα `terrarium` και επιλέξτε τον
4. Στο παράθυρο Explorer, κάντε κλικ στο εικονίδιο "New File"
5. Ονομάστε το αρχείο σας `index.html`

**Επιλογή 2: Χρήση Εντολών Τερματικού**
```bash
mkdir terrarium
cd terrarium
touch index.html
code index.html
```
**Τι επιτυγχάνουν αυτές οι εντολές:**
- **Δημιουργούν** έναν νέο κατάλογο με όνομα `terrarium` για το έργο σας
- **Μετακινούνται** στον κατάλογο terrarium
- **Δημιουργούν** ένα κενό αρχείο `index.html`
- **Ανοίγουν** το αρχείο στο Visual Studio Code για επεξεργασία
> 💡 **Συμβουλή**: Το όνομα αρχείου `index.html` είναι ιδιαίτερο στην ανάπτυξη ιστού. Όταν κάποιος επισκέπτεται μια ιστοσελίδα, οι περιηγητές αναζητούν αυτόματα το `index.html` ως την προεπιλεγμένη σελίδα για εμφάνιση. Αυτό σημαίνει ότι μια διεύθυνση URL όπως `https://mysite.com/projects/` θα εξυπηρετήσει αυτόματα το αρχείο `index.html` από τον φάκελο `projects` χωρίς να χρειάζεται να καθορίσετε το όνομα αρχείου στη διεύθυνση URL.
## Κατανόηση της Δομής Εγγράφου HTML
Κάθε έγγραφο HTML ακολουθεί μια συγκεκριμένη δομή που οι περιηγητές χρειάζονται για να κατανοήσουν και να εμφανίσουν σωστά. Σκεφτείτε αυτή τη δομή σαν μια επίσημη επιστολή – έχει απαιτούμενα στοιχεία σε συγκεκριμένη σειρά που βοηθούν τον παραλήπτη (σε αυτή την περίπτωση, τον περιηγητή) να επεξεργαστεί σωστά το περιεχόμενο.
Ας ξεκινήσουμε προσθέτοντας τη βασική βάση που χρειάζεται κάθε έγγραφο HTML.
### Η Δήλωση DOCTYPE και το Ριζικό Στοιχείο
Οι πρώτες δύο γραμμές οποιουδήποτε αρχείου HTML λειτουργούν ως "εισαγωγή" του εγγράφου στον περιηγητή:
```html
```
**Κατανόηση του τι κάνει αυτός ο κώδικας:**
- **Δηλώνει** τον τύπο εγγράφου ως HTML5 χρησιμοποιώντας το ``
- **Δημιουργεί** το ριζικό στοιχείο `` που θα περιέχει όλο το περιεχόμενο της σελίδας
- **Καθιερώνει** σύγχρονα πρότυπα ιστού για σωστή απόδοση από τον περιηγητή
- **Εξασφαλίζει** συνεπή εμφάνιση σε διαφορετικούς περιηγητές και συσκευές
> 💡 **Συμβουλή VS Code**: Τοποθετήστε τον δείκτη του ποντικιού πάνω από οποιαδήποτε ετικέτα HTML στο VS Code για να δείτε χρήσιμες πληροφορίες από τα MDN Web Docs, συμπεριλαμβανομένων παραδειγμάτων χρήσης και λεπτομερειών συμβατότητας περιηγητή.
> 📚 **Μάθετε Περισσότερα**: Η δήλωση DOCTYPE αποτρέπει τους περιηγητές από το να εισέλθουν σε "quirks mode", που χρησιμοποιούνταν για την υποστήριξη πολύ παλιών ιστοσελίδων. Η σύγχρονη ανάπτυξη ιστού χρησιμοποιεί την απλή δήλωση `` για να εξασφαλίσει [συμμόρφωση με τα πρότυπα](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode).
## Προσθήκη Βασικών Μεταδεδομένων Εγγράφου
Το τμήμα `
` ενός εγγράφου HTML περιέχει κρίσιμες πληροφορίες που χρειάζονται οι περιηγητές και οι μηχανές αναζήτησης, αλλά που οι επισκέπτες δεν βλέπουν άμεσα στη σελίδα. Σκεφτείτε το σαν τις "παρασκηνιακές" πληροφορίες που βοηθούν τη σελίδα σας να λειτουργεί σωστά και να εμφανίζεται σωστά σε διαφορετικές συσκευές και πλατφόρμες.
Αυτό το μεταδεδομένο λέει στους περιηγητές πώς να εμφανίσουν τη σελίδα σας, ποια κωδικοποίηση χαρακτήρων να χρησιμοποιήσουν και πώς να χειριστούν διαφορετικά μεγέθη οθόνης – όλα απαραίτητα για τη δημιουργία επαγγελματικών, προσβάσιμων ιστοσελίδων.
### Εργασία: Προσθέστε το Τμήμα Head του Εγγράφου
Εισάγετε αυτό το τμήμα `` ανάμεσα στις ετικέτες ``:
```html
Welcome to my Virtual Terrarium
```
**Ανάλυση του τι επιτυγχάνει κάθε στοιχείο:**
- **Ορίζει** τον τίτλο της σελίδας που εμφανίζεται στις καρτέλες του περιηγητή και στα αποτελέσματα αναζήτησης
- **Καθορίζει** την κωδικοποίηση χαρακτήρων UTF-8 για σωστή εμφάνιση κειμένου παγκοσμίως
- **Εξασφαλίζει** συμβατότητα με σύγχρονες εκδόσεις του Internet Explorer
- **Ρυθμίζει** τον σχεδιασμό για να ταιριάζει με το πλάτος της συσκευής
- **Ελέγχει** το αρχικό επίπεδο ζουμ για να εμφανίζει το περιεχόμενο σε φυσικό μέγεθος
> 🤔 **Σκεφτείτε Αυτό**: Τι θα συνέβαινε αν ορίζατε μια ετικέτα meta για το viewport όπως αυτή: ``; Αυτό θα ανάγκαζε τη σελίδα να είναι πάντα 600 pixels πλάτος, καταστρέφοντας τον ευέλικτο σχεδιασμό! Μάθετε περισσότερα για τη [σωστή ρύθμιση του viewport](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag).
## Δημιουργία του Σώματος του Εγγράφου
Το στοιχείο `` περιέχει όλο το ορατό περιεχόμενο της ιστοσελίδας σας – όλα όσα θα δουν και θα αλληλεπιδράσουν οι χρήστες. Ενώ το τμήμα `` παρέχει οδηγίες στον περιηγητή, το τμήμα `` περιέχει το πραγματικό περιεχόμενο: κείμενο, εικόνες, κουμπιά και άλλα στοιχεία που δημιουργούν τη διεπαφή χρήστη.
Ας προσθέσουμε τη δομή του σώματος και ας κατανοήσουμε πώς οι ετικέτες HTML συνεργάζονται για να δημιουργήσουν ουσιαστικό περιεχόμενο.
### Κατανόηση της Δομής Ετικετών HTML
Το HTML χρησιμοποιεί ζευγάρια ετικετών για να ορίσει στοιχεία. Οι περισσότερες ετικέτες έχουν μια ετικέτα ανοίγματος όπως `
` και μια ετικέτα κλεισίματος όπως `
`, με περιεχόμενο ενδιάμεσα: `
Γεια σου, κόσμε!
`. Αυτό δημιουργεί ένα στοιχείο παραγράφου που περιέχει το κείμενο "Γεια σου, κόσμε!".
### Εργασία: Προσθέστε το Στοιχείο Body
Ενημερώστε το αρχείο HTML σας για να περιλαμβάνει το στοιχείο ``:
```html
Welcome to my Virtual Terrarium
```
**Τι παρέχει αυτή η πλήρης δομή:**
- **Καθιερώνει** το βασικό πλαίσιο εγγράφου HTML5
- **Περιλαμβάνει** βασικά μεταδεδομένα για σωστή απόδοση από τον περιηγητή
- **Δημιουργεί** ένα κενό σώμα έτοιμο για το ορατό περιεχόμενο
- **Ακολουθεί** τις βέλτιστες πρακτικές της σύγχρονης ανάπτυξης ιστού
Τώρα είστε έτοιμοι να προσθέσετε τα ορατά στοιχεία του terrarium σας. Θα χρησιμοποιήσουμε στοιχεία `
` ως δοχεία για να οργανώσουμε διαφορετικά τμήματα περιεχομένου και στοιχεία `` για να εμφανίσουμε τις εικόνες των φυτών.
### Εργασία με Εικόνες και Δοχεία Διάταξης
Οι εικόνες είναι ιδιαίτερες στο HTML επειδή χρησιμοποιούν ετικέτες "αυτοκλεισίματος". Σε αντίθεση με στοιχεία όπως `` που περιβάλλουν περιεχόμενο, η ετικέτα `` περιέχει όλες τις πληροφορίες που χρειάζεται μέσα στην ίδια την ετικέτα χρησιμοποιώντας χαρακτηριστικά όπως `src` για τη διαδρομή αρχείου εικόνας και `alt` για την προσβασιμότητα.
Πριν προσθέσετε εικόνες στο HTML σας, θα χρειαστεί να οργανώσετε σωστά τα αρχεία του έργου σας δημιουργώντας έναν φάκελο εικόνων και προσθέτοντας τα γραφικά των φυτών.
**Πρώτα, ρυθμίστε τις εικόνες σας:**
1. Δημιουργήστε έναν φάκελο με όνομα `images` μέσα στον φάκελο του έργου terrarium
2. Κατεβάστε τις εικόνες φυτών από τον [φάκελο λύσεων](../../../../3-terrarium/solution/images) (συνολικά 14 εικόνες φυτών)
3. Αντιγράψτε όλες τις εικόνες φυτών στον νέο φάκελο `images`
### Εργασία: Δημιουργήστε τη Διάταξη Εμφάνισης Φυτών
Τώρα προσθέστε τις εικόνες φυτών οργανωμένες σε δύο στήλες ανάμεσα στις ετικέτες ``:
```html
```
**Βήμα προς βήμα, τι συμβαίνει σε αυτόν τον κώδικα:**
- **Δημιουργεί** ένα κύριο δοχείο σελίδας με `id="page"` για να περιέχει όλο το περιεχόμενο
- **Καθιερώνει** δύο δοχεία στηλών: `left-container` και `right-container`
- **Οργανώνει** 7 φυτά στη αριστερή στήλη και 7 φυτά στη δεξιά στήλη
- **Περιβάλλει** κάθε εικόνα φυτού σε ένα div `plant-holder` για ατομική τοποθέτηση
- **Εφαρμόζει** συνεπή ονόματα κλάσεων για στυλιζάρισμα CSS στο επόμενο μάθημα
- **Αναθέτει** μοναδικά IDs σε κάθε εικόνα φυτού για αλληλεπίδραση JavaScript αργότερα
- **Περιλαμβάνει** σωστές διαδρομές αρχείων που δείχνουν στον φάκελο εικόνων
> 🤔 **Σκεφτείτε Αυτό**: Παρατηρήστε ότι όλες οι εικόνες έχουν το ίδιο alt text "plant". Αυτό δεν είναι ιδανικό για την προσβασιμότητα. Οι χρήστες αναγνωστών οθόνης θα ακούσουν "plant" να επαναλαμβάνεται 14 φορές χωρίς να γνωρίζουν ποιο συγκεκριμένο φυτό δείχνει κάθε εικόνα. Μπορείτε να σκεφτείτε καλύτερο, πιο περιγραφικό alt text για κάθε εικόνα;
> 📝 **Τύποι Στοιχείων HTML**: Τα στοιχεία `
` είναι "block-level" και καταλαμβάνουν πλήρες πλάτος, ενώ τα στοιχεία `` είναι "inline" και καταλαμβάνουν μόνο το απαραίτητο πλάτος. Τι πιστεύετε ότι θα συνέβαινε αν αλλάζατε όλες αυτές τις ετικέτες `
` σε ετικέτες ``;
Με αυτόν τον προστιθέμενο κώδικα, τα φυτά θα εμφανιστούν στην οθόνη, αν και δεν θα φαίνονται ακόμα καλοσχεδιασμένα – αυτό είναι δουλειά του CSS στο επόμενο μάθημα! Προς το παρόν, έχετε μια σταθερή βάση HTML που οργανώνει σωστά το περιεχόμενο σας και ακολουθεί τις βέλτιστες πρακτικές προσβασιμότητας.
## Χρήση Σημασιολογικού HTML για Προσβασιμότητα
Το σημασιολογικό HTML σημαίνει την επιλογή στοιχείων HTML με βάση τη σημασία και τον σκοπό τους, όχι μόνο την εμφάνισή τους. Όταν χρησιμοποιείτε σημασιολογική σήμανση, επικοινωνείτε τη δομή και τη σημασία του περιεχομένου σας στους περιηγητές, τις μηχανές αναζήτησης και τις βοηθητικές τεχνολογίες όπως οι αναγνώστες οθόνης.
Αυτή η προσέγγιση κάνει τις ιστοσελίδες σας πιο προσβάσιμες σε χρήστες με αναπηρίες και βοηθά τις μηχανές αναζήτησης να κατανοήσουν καλύτερα το περιεχόμενό σας. Είναι μια θεμελιώδης αρχή της σύγχρονης ανάπτυξης ιστού που δημιουργεί καλύτερες εμπειρίες για όλους.
### Προσθήκη Σημασιολογικού Τίτλου Σελίδας
Ας προσθέσουμε έναν σωστό τίτλο στη σελίδα terrarium σας. Εισάγετε αυτή τη γραμμή ακριβώς μετά την ετικέτα ανοίγματος ``:
```html
My Terrarium
```
**Γιατί έχει σημασία η σημασιολογική σήμανση:**
- **Βοηθά** τους αναγνώστες οθόνης να πλοηγηθούν και να κατανοήσουν τη δομή της σελίδας
- **Βελτιώνει** τη βελτιστοποίηση μηχανών αναζήτησης (SEO) διευκρινίζοντας την ιεραρχία του περιεχομένου
- **Ενισχύει** την προσβασιμότητα για χρήστες με προβλήματα όρασης ή γνωστικές διαφορές
- **Δημιουργεί** καλύτερες εμπειρίες χρήστη σε όλες τις συσκευές και πλατφόρμες
- **Ακολουθεί** πρότυπα ιστού και βέλτιστες πρακτικές για επαγγελματική ανάπτυξη
**Παραδείγματα σημασιολογικών και μη σημασιολογικών επιλογών:**
| Σκοπός | ✅ Σημασιολογική Επιλογή |
**Προτροπή:** Δημιουργήστε μια ενότητα HTML με σωστή σημασιολογία που περιλαμβάνει έναν κύριο τίτλο "Οδηγός Φροντίδας Φυτών", τρεις υποενότητες με τίτλους "Πότισμα", "Απαιτήσεις Φωτός" και "Φροντίδα Εδάφους", καθεμία με μια παράγραφο πληροφοριών για τη φροντίδα των φυτών. Χρησιμοποιήστε σωστά σημασιολογικά HTML tags όπως ``, `
`, `
` και `
` για να δομήσετε το περιεχόμενο κατάλληλα.
Μάθετε περισσότερα για [agent mode](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) εδώ.
## Εξερεύνηση της Ιστορίας του HTML Challenge
**Μάθηση για την Εξέλιξη του Web**
Το HTML έχει εξελιχθεί σημαντικά από τότε που ο Tim Berners-Lee δημιούργησε τον πρώτο web browser στο CERN το 1990. Ορισμένα παλαιότερα tags όπως το `