# פרויקט טרריום חלק 1: מבוא ל-HTML
```mermaid
journey
title Your HTML Learning Journey
section Foundation
Create HTML file: 3: Student
Add DOCTYPE: 4: Student
Structure document: 5: Student
section Content
Add metadata: 4: Student
Include images: 5: Student
Organize layout: 5: Student
section Semantics
Use proper tags: 4: Student
Enhance accessibility: 5: Student
Build terrarium: 5: Student
```

> סקיצה מאת [Tomomi Imura](https://twitter.com/girlie_mac)
HTML, או HyperText Markup Language, הוא הבסיס לכל אתר שביקרת בו אי פעם. חשבו על HTML כשלד שמעניק מבנה לדפי אינטרנט – הוא מגדיר היכן התוכן נמצא, איך הוא מאורגן ומה כל חלק מייצג. בעוד ש-CSS "ילביש" את ה-HTML בצבעים ובפריסות, ו-JavaScript יעניק לו חיים עם אינטראקטיביות, HTML מספק את המבנה הבסיסי שמאפשר את כל השאר.
בשיעור הזה, תיצרו את מבנה ה-HTML לממשק טרריום וירטואלי. הפרויקט המעשי הזה ילמד אתכם מושגי HTML בסיסיים תוך כדי בניית משהו חזותי ומעניין. תלמדו איך לארגן תוכן באמצעות אלמנטים סמנטיים, לעבוד עם תמונות וליצור את הבסיס ליישום אינטרנט אינטראקטיבי.
בסוף השיעור, יהיה לכם דף HTML עובד שמציג תמונות של צמחים בעמודות מאורגנות, מוכן לעיצוב בשיעור הבא. אל תדאגו אם זה נראה בסיסי בהתחלה – זה בדיוק מה ש-HTML אמור לעשות לפני ש-CSS מוסיף את הליטוש החזותי.
```mermaid
mindmap
root((HTML Fundamentals))
Structure
DOCTYPE Declaration
HTML Element
Head Section
Body Content
Elements
Tags & Attributes
Self-closing Tags
Nested Elements
Block vs Inline
Content
Text Elements
Images
Containers (div)
Lists
Semantics
Meaningful Tags
Accessibility
Screen Readers
SEO Benefits
Best Practices
Proper Nesting
Valid Markup
Descriptive Alt Text
Organized Structure
```
## שאלון לפני השיעור
[שאלון לפני השיעור](https://ff-quizzes.netlify.app/web/quiz/15)
> 📺 **צפו ולמדו**: צפו בסרטון סקירה מועיל
>
> [](https://www.youtube.com/watch?v=1TvxJKBzhyQ)
## הכנת הפרויקט שלכם
לפני שנצלול לקוד HTML, בואו נכין סביבת עבודה מסודרת לפרויקט הטרריום שלכם. יצירת מבנה קבצים מאורגן מההתחלה היא הרגל חשוב שישרת אתכם לאורך כל מסע פיתוח האינטרנט שלכם.
### משימה: יצירת מבנה הפרויקט שלכם
תיצרו תיקייה ייעודית לפרויקט הטרריום שלכם ותוסיפו את קובץ ה-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` לפרויקט שלכם
- **מנווטות** לתוך תיקיית הטרריום
- **יוצרות** קובץ `index.html` ריק
- **פותחות** את הקובץ ב-Visual Studio Code לעריכה
> 💡 **טיפ מקצועי**: שם הקובץ `index.html` הוא מיוחד בפיתוח אתרים. כאשר מישהו מבקר באתר, דפדפנים מחפשים אוטומטית את `index.html` כדף ברירת המחדל להצגה. זה אומר שכתובת כמו `https://mysite.com/projects/` תציג אוטומטית את קובץ `index.html` מתוך תיקיית `projects` מבלי צורך לציין את שם הקובץ בכתובת.
## הבנת מבנה מסמך HTML
כל מסמך HTML עוקב אחר מבנה ספציפי שהדפדפנים צריכים להבין ולהציג בצורה נכונה. חשבו על מבנה זה כמו מכתב רשמי – יש לו אלמנטים נדרשים בסדר מסוים שעוזרים למקבל (במקרה הזה, הדפדפן) לעבד את התוכן בצורה נכונה.
```mermaid
flowchart TD
A[""] --> B[""]
B --> C["
"]
C --> D[""]
C --> E[""]
C --> F[""]
B --> G[""]
G --> H["
Heading"]
G --> I["
Containers"]
G --> J[" Images"]
style A fill:#e1f5fe
style B fill:#f3e5f5
style C fill:#fff3e0
style G fill:#e8f5e8
```
בואו נתחיל בהוספת הבסיס החיוני שכל מסמך HTML צריך.
### הצהרת DOCTYPE ואלמנט השורש
שני השורות הראשונות של כל קובץ HTML משמשות כ"הקדמה" של המסמך לדפדפן:
```html
```
**הבנת מה הקוד הזה עושה:**
- **מצהיר** על סוג המסמך כ-HTML5 באמצעות ``
- **יוצר** את אלמנט השורש `` שיכיל את כל תוכן הדף
- **מבסס** סטנדרטים מודרניים של אינטרנט להצגה נכונה בדפדפנים
- **מבטיח** תצוגה עקבית בין דפדפנים ומכשירים שונים
> 💡 **טיפ VS Code**: רחפו מעל כל תג HTML ב-VS Code כדי לראות מידע מועיל מ-MDN Web Docs, כולל דוגמאות שימוש ופרטי תאימות לדפדפנים.
> 📚 **למדו עוד**: הצהרת DOCTYPE מונעת מדפדפנים להיכנס ל"מצב quirks", ששימש לתמיכה באתרים ישנים מאוד. פיתוח אינטרנט מודרני משתמש בהצהרה הפשוטה `` כדי להבטיח [תצוגה תואמת סטנדרטים](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode).
### 🔄 **בדיקה פדגוגית**
**עצירה והרהור**: לפני שתמשיכו, ודאו שאתם מבינים:
- ✅ למה כל מסמך HTML צריך הצהרת DOCTYPE
- ✅ מה מכיל אלמנט השורש ``
- ✅ איך מבנה זה עוזר לדפדפנים להציג דפים בצורה נכונה
**מבחן עצמי מהיר**: האם תוכלו להסביר במילים שלכם מה משמעות "תצוגה תואמת סטנדרטים"?
## הוספת מטא-נתונים חיוניים למסמך
החלק `` של מסמך HTML מכיל מידע חיוני שדפדפנים ומנועי חיפוש צריכים, אך המבקרים לא רואים ישירות בדף. חשבו על זה כמידע "מאחורי הקלעים" שעוזר לדף האינטרנט שלכם לעבוד בצורה נכונה ולהופיע בצורה נכונה במכשירים ופלטפורמות שונות.
מטא-נתונים אלו אומרים לדפדפנים איך להציג את הדף שלכם, איזה קידוד תווים להשתמש, ואיך להתמודד עם גדלי מסך שונים – הכל חיוני ליצירת דפי אינטרנט מקצועיים ונגישים.
### משימה: הוסיפו את החלק הראשי של המסמך
הכניסו את החלק `` הזה בין תגי הפתיחה והסגירה של ``:
```html
Welcome to my Virtual Terrarium
```
**פירוט מה כל אלמנט מבצע:**
- **מגדיר** את כותרת הדף שמופיעה בלשוניות הדפדפן ובתוצאות חיפוש
- **מציין** קידוד תווים UTF-8 להצגת טקסט בצורה נכונה ברחבי העולם
- **מבטיח** תאימות עם גרסאות מודרניות של Internet Explorer
- **מגדיר** עיצוב רספונסיבי על ידי התאמת ה-viewport לרוחב המכשיר
- **שולט** ברמת הזום ההתחלתית להצגת תוכן בגודל טבעי
> 🤔 **חשבו על זה**: מה יקרה אם תגדירו תג מטא viewport כמו זה: ``? זה יגרום לדף להיות תמיד ברוחב של 600 פיקסלים, מה שישבור את העיצוב הרספונסיבי! למדו עוד על [הגדרת viewport נכונה](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag).
## בניית גוף המסמך
האלמנט `` מכיל את כל התוכן הנראה של דף האינטרנט שלכם – כל מה שהמשתמשים יראו ויתקשרו איתו. בעוד שהחלק `` סיפק הוראות לדפדפן, החלק `` מכיל את התוכן עצמו: טקסט, תמונות, כפתורים ואלמנטים אחרים שיוצרים את ממשק המשתמש שלכם.
בואו נוסיף את מבנה הגוף ונבין איך תגי HTML עובדים יחד כדי ליצור תוכן משמעותי.
### הבנת מבנה תגי HTML
HTML משתמש בתגים זוגיים כדי להגדיר אלמנטים. לרוב התגים יש תג פתיחה כמו `
` ותג סגירה כמו `
`, עם תוכן ביניהם: `
Hello, world!
`. זה יוצר אלמנט פסקה שמכיל את הטקסט "Hello, world!".
### משימה: הוסיפו את אלמנט הגוף
עדכנו את קובץ ה-HTML שלכם כדי לכלול את האלמנט ``:
```html
Welcome to my Virtual Terrarium
```
**מה המבנה המלא הזה מספק:**
- **מבסס** את מסגרת המסמך הבסיסית של HTML5
- **כולל** מטא-נתונים חיוניים להצגה נכונה בדפדפנים
- **יוצר** גוף ריק מוכן לתוכן הנראה שלכם
- **עוקב** אחרי שיטות עבודה מומלצות בפיתוח אינטרנט מודרני
עכשיו אתם מוכנים להוסיף את האלמנטים הנראים של הטרריום שלכם. נשתמש באלמנטים `
` כקונטיינרים לארגון חלקים שונים של תוכן, ובאלמנטים `` להצגת תמונות הצמחים.
### עבודה עם תמונות וקונטיינרים לפריסה
תמונות הן מיוחדות ב-HTML כי הן משתמשות בתגים "סוגרים עצמם". בניגוד לאלמנטים כמו `` שעוטפים תוכן, תג `` מכיל את כל המידע שהוא צריך בתוך התג עצמו באמצעות מאפיינים כמו `src` לנתיב קובץ התמונה ו-`alt` לנגישות.
לפני שתוסיפו תמונות ל-HTML שלכם, תצטרכו לארגן את קבצי הפרויקט שלכם בצורה נכונה על ידי יצירת תיקיית תמונות והוספת גרפיקות הצמחים.
**ראשית, הכינו את התמונות שלכם:**
1. צרו תיקייה בשם `images` בתוך תיקיית פרויקט הטרריום שלכם
2. הורידו את תמונות הצמחים מתיקיית [הפתרון](../../../../3-terrarium/solution/images) (14 תמונות צמחים בסך הכל)
3. העתיקו את כל תמונות הצמחים לתוך תיקיית `images` החדשה שלכם
### משימה: צרו את פריסת תצוגת הצמחים
עכשיו הוסיפו את תמונות הצמחים מאורגנות בשתי עמודות בין תגי ``:
```html
```
**שלב אחר שלב, מה קורה בקוד הזה:**
- **יוצר** קונטיינר עמוד ראשי עם `id="page"` שמחזיק את כל התוכן
- **מבסס** שני קונטיינרים לעמודות: `left-container` ו-`right-container`
- **מארגן** 7 צמחים בעמודה השמאלית ו-7 צמחים בעמודה הימנית
- **עוטף** כל תמונת צמח ב-div `plant-holder` למיקום אישי
- **מיישם** שמות מחלקה עקביים לעיצוב CSS בשיעור הבא
- **מעניק** מזהים ייחודיים לכל תמונת צמח לאינטראקציה עם JavaScript בהמשך
- **כולל** נתיבי קבצים נכונים שמצביעים על תיקיית התמונות
> 🤔 **חשבו על זה**: שימו לב שכל התמונות כרגע מכילות את אותו טקסט alt "plant". זה לא אידיאלי לנגישות. משתמשי קוראי מסך ישמעו "plant" חוזר 14 פעמים מבלי לדעת איזה צמח כל תמונה מציגה. האם תוכלו לחשוב על טקסט alt טוב יותר, יותר תיאורי, לכל תמונה?
> 📝 **סוגי אלמנטים HTML**: אלמנטים `
` הם "ברמת בלוק" ותופסים רוחב מלא, בעוד שאלמנטים `` הם "בקו" ותופסים רק את הרוחב הנדרש. מה לדעתכם יקרה אם תשנו את כל תגי `
` הללו לתגי ``?
### 🔄 **בדיקה פדגוגית**
**הבנת מבנה**: קחו רגע לסקור את מבנה ה-HTML שלכם:
- ✅ האם אתם יכולים לזהות את הקונטיינרים הראשיים בפריסה שלכם?
- ✅ האם אתם מבינים למה לכל תמונה יש מזהה ייחודי?
- ✅ איך הייתם מתארים את מטרת ה-divs `plant-holder`?
**בדיקה חזותית**: פתחו את קובץ ה-HTML שלכם בדפדפן. אתם אמורים לראות:
- רשימה בסיסית של תמונות צמחים
- תמונות מאורגנות בשתי עמודות
- פריסה פשוטה ולא מעוצבת
**זכרו**: המראה הפשוט הזה הוא בדיוק איך ש-HTML אמור להיראות לפני עיצוב CSS!
עם סימון זה שנוסף, הצמחים יופיעו על המסך, למרות שהם עדיין לא ייראו מלוטשים – זה מה ש-CSS נועד לעשות בשיעור הבא! לעת עתה, יש לכם בסיס HTML מוצק שמארגן את התוכן שלכם בצורה נכונה ועוקב אחרי שיטות עבודה מומלצות לנגישות.
## שימוש ב-HTML סמנטי לנגישות
HTML סמנטי פירושו בחירת אלמנטים HTML על בסיס משמעותם ומטרתם, לא רק על בסיס המראה שלהם. כשאתם משתמשים בסימון סמנטי, אתם מתקשרים את המבנה והמשמעות של התוכן שלכם לדפדפנים, מנועי חיפוש וטכנולוגיות מסייעות כמו קוראי מסך.
```mermaid
flowchart TD
A[Need to add content?] --> B{What type?}
B -->|Main heading| C["