ตู้คอนเทนเนอร์"]
G --> J["
![]()
รูปภาพ"]
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 mode" ซึ่งเคยใช้เพื่อรองรับเว็บไซต์เก่ามาก การพัฒนาเว็บสมัยใหม่ใช้การประกาศง่ายๆ แบบ `` เพื่อให้แน่ใจว่าเป็น [การเรนเดอร์ที่สอดคล้องกับมาตรฐาน](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 ให้ตรงกับความกว้างของอุปกรณ์
- **ควบคุม** ระดับการซูมเริ่มต้นเพื่อแสดงเนื้อหาในขนาดธรรมชาติ
> 🤔 **ลองคิดดู**: จะเกิดอะไรขึ้นถ้าคุณตั้งค่า meta viewport เป็นแบบนี้: `
`? นี่จะบังคับให้หน้าเว็บกว้างเพียง 600 พิกเซลตลอดเวลา ซึ่งจะทำให้การออกแบบตอบสนองพัง! เรียนรู้เพิ่มเติมเกี่ยวกับ [การตั้งค่า viewport ที่เหมาะสม](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag).
## การสร้างส่วนเนื้อหาของเอกสาร
องค์ประกอบ `` ประกอบด้วยเนื้อหาทั้งหมดที่มองเห็นได้ของเว็บเพจคุณ – ทุกอย่างที่ผู้ใช้จะเห็นและโต้ตอบด้วย ในขณะที่ส่วน `` ให้คำสั่งกับเบราว์เซอร์ ส่วน `` ประกอบด้วยเนื้อหาจริง: ข้อความ ภาพ ปุ่ม และองค์ประกอบอื่น ๆ ที่สร้างอินเทอร์เฟซผู้ใช้ของคุณ
มาเพิ่มโครงสร้างของส่วนนี้และทำความเข้าใจว่าแท็ก HTML ทำงานร่วมกันอย่างไรเพื่อสร้างเนื้อหาที่มีความหมาย
### ทำความเข้าใจโครงสร้างแท็ก HTML
HTML ใช้แท็กคู่เพื่อกำหนดองค์ประกอบ แท็กส่วนใหญ่จะมีแท็กเปิดเช่น `
` และแท็กปิดเช่น `
` โดยมีเนื้อหาอยู่ระหว่างกลาง: `
Hello, world!
` ซึ่งจะสร้างองค์ประกอบย่อหน้าที่มีข้อความ "Hello, world!" อยู่ภายใน
### งาน: เพิ่มองค์ประกอบ body
อัปเดตไฟล์ HTML ของคุณให้รวมองค์ประกอบ ``:
```html
Welcome to my Virtual Terrarium
```
**นี่คือสิ่งที่โครงสร้างครบถ้วนนี้มอบให้:**
- **สร้าง** โครงร่างเอกสาร HTML5 พื้นฐาน
- **รวม** เมตาดาต้าที่จำเป็นสำหรับการแสดงผลที่ถูกต้องของเบราว์เซอร์
- **สร้าง** ส่วนเนื้อหาที่ว่างเปล่าพร้อมสำหรับเนื้อหาที่มองเห็นได้ของคุณ
- **ปฏิบัติตาม** แนวทางพัฒนาเว็บสมัยใหม่ที่ดีที่สุด
ตอนนี้คุณพร้อมเพิ่มองค์ประกอบที่มองเห็นได้ของ terrarium แล้ว เราจะใช้แท็ก `
` เป็นภาชนะเพื่อจัดระเบียบส่วนต่างๆ ของเนื้อหา และแท็ก `
![]()
` เพื่อแสดงภาพพืช
### การทำงานกับภาพและภาชนะจัดวาง
ภาพใน HTML มีความพิเศษเพราะใช้แท็กแบบ "ปิดตัวเอง" แตกต่างจากองค์ประกอบอย่าง `
` ที่ครอบคลุมเนื้อหา แท็ก `
![]()
` จะบรรจุข้อมูลทั้งหมดที่ต้องการไว้ภายในแท็กเองโดยใช้แอตทริบิวต์เช่น `src` สำหรับเส้นทางไฟล์ภาพ และ `alt` สำหรับการเข้าถึง
ก่อนเพิ่มภาพใน HTML คุณต้องจัดระเบียบไฟล์โปรเจกต์ของคุณให้ถูกต้องโดยการสร้างโฟลเดอร์ images และเพิ่มภาพพืชเข้าไป
**อันดับแรก ตั้งค่าสำหรับภาพของคุณ:**
1. สร้างโฟลเดอร์ชื่อ `images` ภายในโฟลเดอร์โปรเจกต์ terrarium ของคุณ
2. ดาวน์โหลดภาพพืชจาก [โฟลเดอร์ตัวอย่าง](../../../../3-terrarium/solution/images) (รวม 14 ภาพพืช)
3. คัดลอกภาพพืชทั้งหมดใส่ในโฟลเดอร์ `images` ที่สร้างใหม่
### งาน: สร้างเลย์เอาต์แสดงพืช
ตอนนี้เพิ่มภาพพืชที่จัดวางเป็นสองคอลัมน์ระหว่างแท็ก `` ของคุณ:
```html
```
**ทีละขั้นตอน นี่คือสิ่งที่โค้ดนี้ทำ:**
- **สร้าง** ตัวภาชนะหลักของหน้าโดยใช้ `id="page"` เพื่อเก็บเนื้อหาทั้งหมด
- **จัดตั้ง** ตัวภาชนะสองคอลัมน์คือ `left-container` และ `right-container`
- **จัดระเบียบ** พืช 7 ต้นในคอลัมน์ซ้ายและ 7 ต้นในคอลัมน์ขวา
- **ล้อมรอบ** ภาพพืชแต่ละภาพด้วย `
` ที่มีคลาส `plant-holder` เพื่อจัดตำแหน่งแต่ละต้น
- **ใช้** ชื่อคลาสที่สอดคล้องกันสำหรับการตกแต่ง CSS ในบทเรียนถัดไป
- **กำหนด** ID เฉพาะสำหรับภาพพืชแต่ละภาพเพื่อให้สามารถโต้ตอบกับ JavaScript ในภายหลัง
- **ระบุ** เส้นทางไฟล์อย่างถูกต้องชี้ไปยังโฟลเดอร์ images
> 🤔 **ลองพิจารณา**: สังเกตว่าภาพทั้งหมดนี้มีคำอธิบายแท็ก alt ว่า "plant" เหมือนกันหมด ซึ่งไม่เหมาะสำหรับการเข้าถึง ผู้ใช้ที่ใช้เครื่องอ่านหน้าจอจะได้ยินคำว่า "plant" ซ้ำๆ 14 ครั้งโดยไม่รู้ว่าภาพแต่ละภาพคือพืชอะไร คุณสามารถคิดคำอธิบายแท็ก alt ที่ดีกว่าและมีรายละเอียดมากขึ้นสำหรับแต่ละภาพได้ไหม?
> 📝 **ประเภทองค์ประกอบ HTML**: `
` เป็นองค์ประกอบแบบ block-level และจะใช้ความกว้างเต็มพื้นที่ ขณะที่ `
` เป็นองค์ประกอบแบบ inline ใช้ความกว้างเท่าที่จำเป็น คุณคิดว่าจะเกิดอะไรขึ้นหากเปลี่ยนแท็ก `` ทั้งหมดเป็น `
`?
### 🔄 **ตรวจสอบเชิงการสอน**
**ทำความเข้าใจโครงสร้าง**: ใช้เวลาสักครู่ทบทวนโครงสร้าง HTML ของคุณ:
- ✅ คุณสามารถระบุภาชนะหลักในเลย์เอาต์ของคุณได้หรือไม่?
- ✅ คุณเข้าใจไหมว่าทำไมแต่ละภาพถึงต้องมี ID เฉพาะ?
- ✅ คุณจะอธิบายจุดประสงค์ของ `` ที่มีคลาส `plant-holder` ได้อย่างไร?
**ตรวจสอบด้วยสายตา**: เปิดไฟล์ HTML ของคุณในเบราว์เซอร์ คุณควรเห็น:
- รายการภาพพืชแบบพื้นฐาน
- ภาพที่จัดเป็นสองคอลัมน์
- เลย์เอาต์เรียบง่ายไม่มีการแต่งสไตล์
**อย่าลืม**: รูปลักษณ์พื้นฐานนี้คือสิ่งที่ HTML ควรเป็นก่อนการตกแต่งด้วย CSS!
เมื่อใส่โค้ดนี้แล้ว ภาพพืชจะปรากฏบนหน้าจอ ถึงแม้ว่าพวกมันจะยังไม่สวยงาม – นั่นคือหน้าที่ของ CSS ในบทเรียนถัดไป! ตอนนี้คุณมีพื้นฐาน HTML ที่มั่นคงซึ่งจัดระเบียบเนื้อหาอย่างถูกต้องและปฏิบัติตามแนวทางการเข้าถึงที่ดีที่สุด
## การใช้ HTML เชิงความหมายเพื่อการเข้าถึง
Semantic HTML หมายถึงการเลือกใช้แท็ก HTML ตามความหมายและจุดประสงค์ของเนื้อหา ไม่ใช่แค่รูปลักษณ์เท่านั้น เมื่อคุณใช้การมาร์กอัปที่มีความหมาย คุณกำลังสื่อสารโครงสร้างและความหมายของเนื้อหากับเบราว์เซอร์ เครื่องมือค้นหา และเทคโนโลยีช่วยเหลือต่างๆ เช่น เครื่องอ่านหน้าจอ
```mermaid
flowchart TD
A[ต้องการเพิ่มเนื้อหาหรือไม่?] --> B{ประเภทใด?}
B -->|หัวข้อหลัก| C["
"]
B -->|หัวข้อย่อย| D[", , เป็นต้น"]
B -->|ย่อหน้า| E["
"]
B -->|รายการ| F["
, "]
B -->|การนำทาง| G["