# โครงการ Terrarium ตอนที่ 1: แนะนำ HTML ```mermaid journey title การเดินทางเรียนรู้ HTML ของคุณ section พื้นฐาน สร้างไฟล์ HTML: 3: Student เพิ่ม DOCTYPE: 4: Student โครงสร้างเอกสาร: 5: Student section เนื้อหา เพิ่มเมตาดาต้า: 4: Student รวมรูปภาพ: 5: Student จัดเรียงเลย์เอาต์: 5: Student section ความหมาย ใช้แท็กที่เหมาะสม: 4: Student เพิ่มการเข้าถึง: 5: Student สร้างสวนพฤกษา: 5: Student ``` ![Introduction to HTML](../../../../translated_images/th/webdev101-html.4389c2067af68e98.webp) > สเก็ตช์โน้ตโดย [Tomomi Imura](https://twitter.com/girlie_mac) HTML หรือที่เรียกว่า HyperText Markup Language คือรากฐานของเว็บไซต์ทุกเว็บไซต์ที่คุณเคยเยี่ยมชม ลองคิดว่า HTML เป็นโครงกระดูกที่ให้องค์ประกอบและโครงสร้างแก่หน้าเว็บ – มันกำหนดว่าคอนเทนต์อยู่ที่ไหน จัดระเบียบอย่างไร และแต่ละส่วนแทนความหมายอะไร ในขณะที่ CSS จะเป็นการ "แต่งตัว" ให้ HTML ของคุณด้วยสีสันและการจัดวาง และ JavaScript จะทำให้มันมีชีวิตชีวาด้วยความโต้ตอบ HTML จะให้โครงสร้างที่จำเป็นซึ่งทำให้ทุกอย่างเป็นไปได้ ในบทเรียนนี้ คุณจะสร้างโครงสร้าง HTML สำหรับอินเทอร์เฟซ terrarium เสมือนจริง โปรเจกต์นี้จะสอนคุณเกี่ยวกับแนวคิดพื้นฐานของ HTML ในขณะที่สร้างสิ่งที่น่าดึงดูดทางสายตา คุณจะได้เรียนรู้การจัดระเบียบคอนเทนต์โดยใช้ส่วนประกอบที่มีความหมาย การทำงานกับภาพ และการสร้างพื้นฐานสำหรับแอปพลิเคชันเว็บที่มีการโต้ตอบ เมื่อจบบทเรียนนี้ คุณจะมีหน้า HTML ที่ทำงานได้ โดยแสดงภาพพืชในคอลัมน์ที่จัดเรียงไว้พร้อมสำหรับการตกแต่งสไตล์ในบทเรียนถัดไป ไม่ต้องกังวลถ้าดูพื้นฐานในตอนแรก – นั่นคือสิ่งที่ HTML ควรเป็นก่อนที่ CSS จะเพิ่มความสวยงามทางสายตา ```mermaid mindmap root((พื้นฐาน HTML)) 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) > 📺 **ดูและเรียนรู้**: ชมวิดีโอแนะนำที่เป็นประโยชน์นี้ > > [![HTML Fundamentals Video](https://img.youtube.com/vi/1TvxJKBzhyQ/0.jpg)](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` ![VS Code Explorer showing new file creation](../../../../translated_images/th/vs-code-index.e2986cf919471eb9.webp) **ตัวเลือกที่ 2: ใช้คำสั่ง Terminal** ```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 ทุกไฟล์จะปฏิบัติตามโครงสร้างเฉพาะที่เบราว์เซอร์ต้องเข้าใจและแสดงผลอย่างถูกต้อง ลองคิดว่าโครงสร้างนี้เหมือนจดหมายอย่างเป็นทางการ – มีองค์ประกอบที่จำเป็นเรียงลำดับกันเพื่อช่วยผู้รับ (ในกรณีนี้คือเบราว์เซอร์) ประมวลผลเนื้อหาอย่างเหมาะสม ```mermaid flowchart TD A[""] --> B[""] B --> C[""] C --> D[""] C --> E["<meta charset>"] C --> F["<meta viewport>"] B --> G["<body>"] G --> H["<h1> หัวข้อ"] G --> I["<div> ตู้คอนเทนเนอร์"] G --> J["<img> รูปภาพ"] style A fill:#e1f5fe style B fill:#f3e5f5 style C fill:#fff3e0 style G fill:#e8f5e8 ``` มาเริ่มโดยการเพิ่มโครงสร้างพื้นฐานที่สำคัญที่เอกสาร HTML ทุกไฟล์ต้องมี ### การประกาศ DOCTYPE และองค์ประกอบราก สองบรรทัดแรกของไฟล์ HTML ใดๆ ทำหน้าที่เป็น "บทนำ" ของเอกสารให้กับเบราว์เซอร์: ```html <!DOCTYPE html> <html></html> ``` **ทำความเข้าใจสิ่งที่โค้ดนี้ทำ:** - **ประกาศ** ชนิดเอกสารเป็น HTML5 โดยใช้ `<!DOCTYPE html>` - **สร้าง** องค์ประกอบราก `<html>` ที่จะบรรจุเนื้อหาทั้งหมดของหน้า - **กำหนด** มาตรฐานเว็บสมัยใหม่เพื่อให้เบราว์เซอร์แสดงผลอย่างถูกต้อง - **รับประกัน** การแสดงผลที่สอดคล้องกันในเบราว์เซอร์และอุปกรณ์ต่างๆ > 💡 **เคล็ดลับ VS Code**: วางเมาส์เหนือแท็ก HTML ใดก็ได้ใน VS Code เพื่อดูข้อมูลช่วยเหลือจาก MDN Web Docs รวมถึงตัวอย่างการใช้งานและรายละเอียดความเข้ากันได้ของเบราว์เซอร์ > 📚 **เรียนรู้เพิ่มเติม**: การประกาศ DOCTYPE จะป้องกันไม่ให้เบราว์เซอร์เข้าสู่ "quirks mode" ซึ่งเคยใช้เพื่อรองรับเว็บไซต์เก่ามาก การพัฒนาเว็บสมัยใหม่ใช้การประกาศง่ายๆ แบบ `<!DOCTYPE html>` เพื่อให้แน่ใจว่าเป็น [การเรนเดอร์ที่สอดคล้องกับมาตรฐาน](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode) ### 🔄 **ตรวจสอบเชิงการสอน** **หยุดและคิด**: ก่อนจะไปต่อ ให้แน่ใจว่าคุณเข้าใจ: - ✅ ทำไมเอกสาร HTML ทุกไฟล์จึงต้องมีประกาศ DOCTYPE - ✅ องค์ประกอบราก `<html>` ประกอบด้วยอะไรบ้าง - ✅ โครงสร้างนี้ช่วยให้เบราว์เซอร์แสดงหน้าต่างๆ ได้อย่างถูกต้องอย่างไร **ทดสอบตัวเองอย่างรวดเร็ว**: คุณสามารถอธิบายด้วยคำของคุณเองได้ไหมว่า "การเรนเดอร์ที่สอดคล้องกับมาตรฐาน" หมายความว่าอย่างไร? ## การเพิ่มเมตาดาต้าเอกสารที่จำเป็น ส่วน `<head>` ของเอกสาร HTML ประกอบด้วยข้อมูลสำคัญที่เบราว์เซอร์และเครื่องมือค้นหาต้องการ แต่ผู้เยี่ยมชมจะไม่เห็นโดยตรงบนหน้าเว็บ ลองนึกว่ามันเป็น "เบื้องหลัง" ที่ช่วยให้เว็บไซต์ของคุณทำงานได้ถูกต้องและแสดงผลอย่างเหมาะสมในอุปกรณ์และแพลตฟอร์มต่างๆ เมตาดาต้านี้แจ้งให้เบราว์เซอร์ทราบว่าจะต้องแสดงหน้าอย่างไร ใช้การเข้ารหัสตัวอักษรแบบไหน และวิธีจัดการกับขนาดหน้าจอที่แตกต่างกัน – ซึ่งทั้งหมดนี้จำเป็นสำหรับการสร้างหน้าเว็บที่มืออาชีพและเข้าถึงได้ ### งาน: เพิ่มส่วนหัวของเอกสาร แทรกส่วน `<head>` นี้ระหว่างแท็กเปิดและปิด `<html>` ของคุณ: ```html <head> <title>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
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
``` **ทีละขั้นตอน นี่คือสิ่งที่โค้ดนี้ทำ:** - **สร้าง** ตัวภาชนะหลักของหน้าโดยใช้ `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["