# Terrarium Project Part 1: HTML အကြောင်းအရာ

> Sketchnote by [Tomomi Imura](https://twitter.com/girlie_mac)
HTML, သို့မဟုတ် HyperText Markup Language ဟာ သင်ဘဝမှာ သွားရောက်လည်ပတ်ခဲ့တဲ့ website တိုင်းရဲ့ အခြေခံအဆောက်အအုံပဲဖြစ်ပါတယ်။ HTML ကို website တွေကို အဆောက်အအုံပေးတဲ့ အရိုးတစ်ခုလို ထင်ရမယ် – content တွေကို ဘယ်မှာထားမလဲ၊ ဘယ်လိုစီမံမလဲ၊ အပိုင်းတစ်ခုချင်းစီက ဘာကို ကိုယ်စားပြုလဲဆိုတာကို သတ်မှတ်ပေးပါတယ်။ CSS ကတော့ နောက်ပိုင်းမှာ HTML ကို အရောင်နဲ့ အဆင်အပြင်တွေဖြင့် အလှဆင်ပေးမှာဖြစ်ပြီး၊ JavaScript ကတော့ အပြန်အလှန်လုပ်ဆောင်မှုတွေနဲ့ အသက်သွင်းပေးမှာဖြစ်ပါတယ်။ HTML က အခြေခံအဆောက်အအုံကိုပေးပြီး အခြားအရာတွေကို ဖြစ်နိုင်ဖို့ အခြေခံပေးပါတယ်။
ဒီသင်ခန်းစာမှာ သင် HTML အခြေခံအဆောက်အအုံကို virtual terrarium interface အတွက် ဖန်တီးမှာဖြစ်ပါတယ်။ ဒီလက်တွေ့လုပ်ငန်းက သင်ကို HTML အခြေခံအချက်တွေကို သင်ပေးမှာဖြစ်ပြီး အမြင်အာရုံကို ဆွဲဆောင်တဲ့ အရာတစ်ခုကို ဖန်တီးနိုင်မှာဖြစ်ပါတယ်။ သင် content တွေကို semantic elements တွေကို အသုံးပြုပြီး စီမံနည်း၊ image တွေနဲ့အလုပ်လုပ်နည်း၊ interactive web application တစ်ခုအတွက် အခြေခံအဆောက်အအုံကို ဖန်တီးနည်းကို သင်ယူရမှာဖြစ်ပါတယ်။
ဒီသင်ခန်းစာအဆုံးမှာ သင် plant image တွေကို စီမံထားတဲ့ column တွေထဲမှာ ပြသထားတဲ့ HTML page တစ်ခုကို ရရှိမှာဖြစ်ပြီး၊ နောက်ထပ်သင်ခန်းစာမှာ အလှဆင်ဖို့ CSS ကို အသုံးပြုနိုင်ဖို့ ပြင်ဆင်ထားမှာဖြစ်ပါတယ်။ အစမှာတော့ အရမ်းရိုးရှင်းနေမယ်လို့ မစိုးရိမ်ပါနဲ့ – CSS က အလှဆင်ပေးမယ့်အခါမှာပဲ HTML ရဲ့ အဓိကအဆောက်အအုံကို ပြည့်စုံစေမှာပါ။
## သင်ခန်းစာမတိုင်မီ Quiz
[Pre-lecture quiz](https://ff-quizzes.netlify.app/web/quiz/15)
> 📺 **ကြည့်ပြီး သင်ယူပါ**: ဒီအကျိုးရှိတဲ့ video overview ကို ကြည့်ပါ
>
> [](https://www.youtube.com/watch?v=1TvxJKBzhyQ)
## Project ကို စတင်ပြင်ဆင်ခြင်း
HTML code ကို စတင်မလုပ်ခင်မှာ သင့် terrarium project အတွက် workspace ကို သေချာစွာ ပြင်ဆင်ထားဖို့လိုပါတယ်။ အစကတည်းက file structure ကို စနစ်တကျဖန်တီးထားခြင်းက သင့် web development ခရီးလမ်းတစ်လျှောက်မှာ အထောက်အကူဖြစ်စေမှာပါ။
### Task: Project Structure ကို ဖန်တီးပါ
သင့် terrarium project အတွက် folder တစ်ခုကို ဖန်တီးပြီး သင့်ရဲ့ ပထမဆုံး HTML file ကို ထည့်ပါ။ သုံးနိုင်တဲ့ နည်းလမ်းနှစ်ခုရှိပါတယ်။
**Option 1: Visual Studio Code ကို အသုံးပြုခြင်း**
1. Visual Studio Code ကို ဖွင့်ပါ
2. "File" → "Open Folder" ကို click လုပ်ပါ၊ သို့မဟုတ် `Ctrl+K, Ctrl+O` (Windows/Linux) သို့မဟုတ် `Cmd+K, Cmd+O` (Mac) ကို အသုံးပြုပါ
3. `terrarium` လို့ folder အသစ်တစ်ခု ဖန်တီးပြီး ရွေးချယ်ပါ
4. Explorer pane မှာ "New File" icon ကို click လုပ်ပါ
5. သင့် file ကို `index.html` လို့ အမည်ပေးပါ

**Option 2: Terminal Commands ကို အသုံးပြုခြင်း**
```bash
mkdir terrarium
cd terrarium
touch index.html
code index.html
```
**ဒီ commands တွေက ဘာလုပ်ဆောင်သလဲဆိုရင်**:
- **Directory အသစ်** `terrarium` ကို ဖန်တီးပြီး project အတွက် အသုံးပြု
- **Directory ထဲ** ကို ဝင်ရောက်
- **အလွတ်** `index.html` file ကို ဖန်တီး
- **File ကို** Visual Studio Code မှာ ဖွင့်ပြီး edit လုပ်နိုင်
> 💡 **Pro Tip**: `index.html` ဆိုတဲ့ filename က web development မှာ အထူးတစ်ခုပါ။ တစ်စုံတစ်ခု website ကို သွားရောက်လည်ပတ်တဲ့အခါ browser တွေက `index.html` ကို default page အဖြစ် ပြသဖို့ အလိုအလျောက် ရှာဖွေပါတယ်။ ဒါကြောင့် `https://mysite.com/projects/` ဆိုတဲ့ URL က `projects` folder ထဲက `index.html` file ကို filename ကို URL မှာ သတ်မှတ်စရာမလိုဘဲ အလိုအလျောက် ပြသပေးမှာပါ။
## HTML Document Structure ကို နားလည်ခြင်း
HTML document တစ်ခုဟာ browser တွေ နားလည်ပြီး မှန်ကန်စွာ ပြသနိုင်ဖို့အတွက် အထူး structure တစ်ခုကို လိုအပ်ပါတယ်။ ဒီ structure ကို formal letter တစ်စောင်လို ထင်ရမယ် – အစီအစဉ်တစ်ခုအတိုင်း လိုအပ်တဲ့ elements တွေကို ထည့်သွင်းထားပြီး browser က content ကို မှန်ကန်စွာ process လုပ်နိုင်ဖို့ အထောက်အကူပြုပါတယ်။
အခုတော့ HTML document တစ်ခုမှာ မရှိမဖြစ်လိုအပ်တဲ့ အခြေခံအဆောက်အအုံကို စတင်ထည့်သွင်းကြည့်ရအောင်။
### DOCTYPE Declaration နဲ့ Root Element
HTML file တစ်ခုရဲ့ ပထမဆုံးလိုင်းနှစ်လိုင်းဟာ browser ကို document ရဲ့ "မိတ်ဆက်" အဖြစ် လုပ်ဆောင်ပေးပါတယ်။
```html
```
**ဒီ code က ဘာလုပ်ဆောင်သလဲဆိုရင်**:
- `` ကို အသုံးပြုပြီး document type ကို HTML5 အဖြစ် သတ်မှတ်
- Page content အားလုံးကို ထည့်သွင်းမယ့် root `` element ကို ဖန်တီး
- Browser rendering ကို မှန်ကန်စေဖို့ modern web standards ကို သတ်မှတ်
- Browser နဲ့ device များမှာ display ကို တူညီစေဖို့ အထောက်အကူပြု
> 💡 **VS Code Tip**: VS Code မှာ HTML tag တစ်ခုချင်းစီကို hover လုပ်ပြီး MDN Web Docs မှာ helpful information တွေကို ကြည့်နိုင်ပါတယ်၊ usage examples နဲ့ browser compatibility details ပါဝင်ပါတယ်။
> 📚 **Learn More**: DOCTYPE declaration က browser တွေကို "quirks mode" မှထွက်စေပြီး၊ အရမ်းဟောင်းနေတဲ့ website တွေကို support လုပ်ဖို့ အသုံးပြုခဲ့တာပါ။ Modern web development မှာ `` declaration ရိုးရှင်းတဲ့အတိုင်း အသုံးပြုပြီး [standards-compliant rendering](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode) ကို သေချာစေပါတယ်။
## Document Metadata ကို ထည့်သွင်းခြင်း
HTML document ရဲ့ `
` အပိုင်းဟာ browser တွေ၊ search engine တွေ အတွက် မရှိမဖြစ်လိုအပ်တဲ့ အချက်အလက်တွေကို ထည့်သွင်းထားပြီး၊ visitors တွေက page ပေါ်မှာ တိုက်ရိုက်မမြင်နိုင်တဲ့ အပိုင်းဖြစ်ပါတယ်။ ဒါဟာ webpage ကို မှန်ကန်စွာ အလုပ်လုပ်စေဖို့၊ device နဲ့ platform များမှာ မှန်ကန်စွာ ပြသနိုင်ဖို့ အထောက်အကူပြုတဲ့ "နောက်ကွယ်" အချက်အလက်တွေကို ပေးစွမ်းပါတယ်။
ဒီ metadata က browser တွေကို page ကို ဘယ်လို display လုပ်မလဲ၊ ဘယ် character encoding ကို အသုံးပြုမလဲ၊ ဘယ် screen size တွေကို handle လုပ်မလဲဆိုတာကို ပြောပြပေးပါတယ် – professional, accessible web pages ဖန်တီးဖို့ မရှိမဖြစ်လိုအပ်ပါတယ်။
### Task: Document Head ကို ထည့်သွင်းပါ
သင့် `` tag တွေကို ဖွင့်ပြီး ပိတ်ထားတဲ့အကြားမှာ ဒီ `` section ကို ထည့်သွင်းပါ:
```html
` elements တွေကို container အဖြစ် အသုံးပြုပြီး content ရဲ့ အပိုင်းအစတွေကို စီမံမှာဖြစ်ပြီး၊ `
![]()
` elements တွေကို plant images တွေကို ပြသဖို့ အသုံးပြုမှာဖြစ်ပါတယ်။
### Images နဲ့ Layout Containers ကို အသုံးပြုခြင်း
HTML မှာ images တွေဟာ "self-closing" tags တွေကို အသုံးပြုပါတယ်။ `
` လို element တွေက content ကို ပတ်ပတ်လည် wrap လုပ်ပေးရတဲ့အစား၊ `
![]()
` tag ကတော့ `src` (image file path) နဲ့ `alt` (accessibility) လို attributes တွေကို အသုံးပြုပြီး tag ထဲမှာ အားလုံးကို ထည့်သွင်းထားပါတယ်။
Images တွေကို HTML မှာ ထည့်သွင်းမယ့်အခါ project files တွေကို သေချာစွာ စီမံထားဖို့လိုပါတယ် – images folder ကို ဖန်တီးပြီး plant graphics တွေကို ထည့်သွင်းပါ။
**အရင်ဆုံး images တွေကို ပြင်ဆင်ပါ**:
1. Terrarium project folder ထဲမှာ `images` folder ကို ဖန်တီးပါ
2. [solution folder](../../../../3-terrarium/solution/images) မှာ plant images တွေကို download လုပ်ပါ (plant images 14 ခု)
3. Plant images အားလုံးကို သင့် `images` folder ထဲကို copy လုပ်ပါ
### Task: Plant Display Layout ကို ဖန်တီးပါ
အခုတော့ plant images တွေကို `` tags တွေကြားမှာ စီမံထားတဲ့ columns နှစ်ခုထဲမှာ ထည့်သွင်းပါ:
```html
```
**ဒီ code မှာ ဘာတွေ ဖြစ်နေသလဲဆိုရင်**:
- `id="page"` နဲ့ main page container ကို ဖန်တီးပြီး content အားလုံးကို ထည့်သွင်း
- `left-container` နဲ့ `right-container` ဆိုတဲ့ column containers နှစ်ခုကို ဖန်တီး
- Left column မှာ plants 7 ခု၊ Right column မှာ plants 7 ခုကို စီမံ
- Plant image တစ်ခုချင်းစီကို `plant-holder` div ထဲမှာ wrap လုပ်ပြီး positioning ကို စီမံ
- CSS styling အတွက် consistent class names တွေကို အသုံးပြု
- JavaScript interaction အတွက် plant image တစ်ခုချင်းစီကို unique IDs သတ်မှတ်
- Images folder ကို pointing လုပ်တဲ့ file paths တွေကို ထည့်သွင်း
> 🤔 **စဉ်းစားပါ**: Images အားလုံးမှာ alt text "plant" တူညီနေပါတယ်။ ဒါဟာ accessibility အတွက် မကောင်းပါဘူး။ Screen reader အသုံးပြုသူတွေဟာ "plant" ဆိုတဲ့ စကားလုံးကို 14 ကြိမ် ထပ်ခါတလဲလဲ ကြားရမှာဖြစ်ပြီး image တစ်ခုချင်းစီက ဘယ် plant ဖြစ်တယ်ဆိုတာ မသိနိုင်ပါဘူး။ Image တစ်ခုချင်းစီအတွက် ပိုမိုဖော်ပြနိုင်တဲ့ alt text ကို သင်ထည့်သွင်းနိုင်မလား?
> 📝 **HTML Element Types**: `
` elements တွေဟာ "block-level" ဖြစ်ပြီး အကျယ်အပြည့်ကိုယူတယ်၊ `
` elements တွေကတော့ "inline" ဖြစ်ပြီး လိုအပ်တဲ့အကျယ်ပဲယူတယ်။ ဒီ `` tags တွေကို `
` tags တွေပြောင်းလိုက်ရင် ဘာဖြစ်မလဲဆိုတာ သင်ထင်ရမလဲ?
ဒီ markup ကို ထည့်သွင်းပြီးရင် plants တွေ screen ပေါ်မှာ ပြသလာမှာဖြစ်ပေမယ့် – အလှဆင်ထားတာမဟုတ်သေးပါဘူး။ CSS ကတော့ နောက်ထပ်သင်ခန်းစာမှာ အလှဆင်ပေးမှာပါ! အခုတော့ သင့် content ကို မှန်ကန်စွာ စီမံထားတဲ့ HTML အခြေခံအဆောက်အအုံကို ရရှိထားပါပြီ။
## Accessibility အတွက် Semantic HTML ကို အသုံးပြုခြင်း
Semantic HTML ဆိုတာ element တွေကို သူ့ရဲ့ အဓိပ္ပါယ်နဲ့ ရည်ရွယ်ချက်အရ ရွေးချယ်အသုံးပြုခြင်းကို ဆိုလိုပါတယ်။ Appearance ကိုသာမဟုတ်ဘဲ content ရဲ့ structure နဲ့ အဓိပ္ပါယ်ကို browser, search engine, နဲ့ screen reader တို့ကို ပြောပြပေးပါတယ်။
ဒီနည်းလမ်းက disabilities ရှိတဲ့ user တွေကို ပိုမိုရောက်ရှိနိုင်တဲ့ website တွေ ဖန်တီးပေးပြီး search engine တွေက content ကို ပိုမိုနားလည်နိုင်စေပါတယ်။ Modern web development ရဲ့ အခြေခံ principle ဖြစ်ပြီး လူတိုင်းအတွက် ပိုမိုကောင်းမွန်တဲ့ အတွေ့အကြုံတွေ ဖန်တီးပေးပါတယ်။
### Semantic Page Title ကို ထည့်သွင်းခြင်း
Terrarium page အတွက် heading ကို သင့် `` tag ကို ဖွင့်ပြီးနောက်မှာ ထည့်သွင်းပါ:
```html
My Terrarium
```
**Semantic markup ဘာကြောင့် အရေးကြီးလဲဆိုရင်**:
- Screen reader တွေ page structure ကို navigate လုပ်ပြီး နားလည်နိုင်စေ
- Search engine optimization (SEO) ကို တိုးတက်စေပြီး content hierarchy ကို ရှင်းလင်းစေ
- Visual impairments သို့မဟုတ် cognitive differences ရှိတဲ့ user တွေအတွက် accessibility ကို တိုးတက်စေ
- Devices နဲ့ platforms အားလုံးမှာ user experience ကို ပိုမိုကောင်းမွန်စေ
- Professional development အတွက် web
**အဓိကခေါင်းစဉ်:** Plant Care Guide
**ရေချိန်ခြင်း**
ရေချိန်ခြင်းသည် အပင်များ၏ ကျန်းမာရေးနှင့် ကြီးထွားမှုအတွက် အရေးကြီးသော အပိုင်းတစ်ခုဖြစ်သည်။ အပင်တစ်ခုစီ၏ ရေလိုအပ်ချက်များကို နားလည်ပြီး အပင်၏ အမျိုးအစားနှင့် ရာသီဥတုအခြေအနေများအပေါ် မူတည်၍ ရေချိန်ပေးပါ။
**အလင်းရောင်လိုအပ်ချက်များ**
အပင်များသည် အလင်းရောင်ကို photosynthesis အတွက် အသုံးပြုသည်။ အပင်တစ်ခုစီ၏ အလင်းရောင်လိုအပ်ချက်များကို သိရှိပြီး အပင်၏ အမျိုးအစားအပေါ် မူတည်၍ အလင်းရောင်အမျှဝေမှုကို သေချာစွာ စီမံပါ။
**ပွဲစေ့စောင့်ရှောက်မှု**
အပင်များ၏ အမြစ်များသည် ကျန်းမာရေးကောင်းမွန်စေရန် သင့်တော်သော ပွဲစေ့ကို လိုအပ်သည်။ ပွဲစေ့၏ အမျိုးအစားနှင့် အပင်၏ အမျိုးအစားအပေါ် မူတည်၍ သင့်တော်သော nutrients နှင့် drainage ကို ထည့်သွင်းစဉ်းစားပါ။
Learn more about [agent mode](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) here.
## HTML သမိုင်းကို စိန်ခေါ်မှုအနက် ရှာဖွေခြင်း
**ဝက်ဘ်၏ တိုးတက်မှုကို လေ့လာခြင်း**
HTML သည် Tim Berners-Lee က 1990 ခုနှစ်တွင် CERN တွင် ပထမဆုံး ဝက်ဘ်ဘရောက်ဇာကို ဖန်တီးခဲ့ပြီးနောက် အလွန်တိုးတက်လာခဲ့သည်။ `