อยากรู้ทำเว็บไซต์แต่ไม่รู้ HTML เริ่มต้นที่ไหน? ติดตามบทช่วยสอนนี้สร้างเว็บไซต์ HTML แรกพร้อมโค้ดตัวอย่าง!
จะครอบคลุม 3 เรื่อง:
- HTML คืออะไร
- ไวยากรณ์ HTML พื้นฐาน
- สร้างเว็บไซต์ local บนคอมพิวเตอร์
เนื้อหาสำหรับผู้เริ่มต้นจริงจัง ไม่มี CSS/JavaScript — เว็บจะไม่สวยงาม แต่เน้นทำความเข้าใจ HTML และการทำงานพื้นฐาน
HTML คืออะไร?
HTML = HyperText Markup Language วิธีแสดงข้อมูลบนหน้าเว็บในเบราว์เซอร์
สำคัญ: HTML ไม่ใช่ ภาษาโปรแกรมมิ่ง (Programming language) — เป็น Markup language ภาษาโปรแกรมเช่น PHP, Java ใช้ logic/conditions ควบคุมเนื้อหา HTML ไม่ทำได้ แต่สำคัญมาก เพราะทุกเว็บไซต์ประกอบด้วย HTML
เปิดไฟล์ HTML ในเบราว์เซอร์
สร้างไฟล์ HTML บนคอมพิวเตอร์ แล้วเปิดในเบราว์เซอร์ได้เลย (เป็น local ไม่ได้อยู่บนอินเทอร์เน็ต) เว็บจริงไฟล์เก็บบนเซิร์ฟเวอร์ แตกระบวนการพื้นฐานคล้ายกัน
ขั้นตอนสร้างไฟล์:
- ไปที่ Desktop หรือที่ต้องการ คลิกขวา > New > Text Document
- ตั้งชื่อ
index.html(ไม่ใช่ .txt) — ถ้าไม่เห็น副檔名 ใช้แท็บ View > ติ๊ก File name extensions - เปิดไฟล์ในเบราว์เซอร์: ดับเบิลคลิกถ้ามีไอคอน Chrome หรือ คลิกขวา > Open with > เลือกเบราว์เซอร์
- จะเห็นหน้าว่าง — ปกติ เพราะยังไม่มีโค้ด
แก้ไขไฟล์
ใช้ code editor: VS Code, Notepad++, Sublime, Atom, Brackets — เปิดไฟล์ใน editor และเบราว์เซอร์พร้อมกัน แล้วเริ่มเขียนโค้ด!
HTML Tags
HTML ประกอบด้วย Tags — ข้อความพิเศษที่ "mark up" ส่วนต่างๆ ของหน้าเว็บ บอกเบราว์เซอร์ให้แสดงเนื้อหาภายในตามรูปแบบที่กำหนด
ตัวอย่าง: <b>extremely excited!!!!!</b> — タグ <b> ทำให้ตัวหนา
โครงสร้าง HTML Tag
- Opening tag:
<b> - Closing tag:
</b>(มี slash นำหน้า)
ทั้งคู่บอกเบราว์เซอร์: ทำให้ข้อความระหว่างทะกคตัวหนา — tags เองจะไม่แสดงบนหน้าจอ
โครงสร้างพื้นฐานของ HTML Document
Doctype และ HTML tags
Tag แรก: <!DOCTYPE html> — บอกเบราว์เซอร์ว่าเป็น HTML5 ไม่ต้องมี closing tag
ต่อด้วย <html>...</html> ครอบทุกอย่าง — ดูซ้ำซ้อนแต่จำเป็น เพื่อให้ทุกอย่าง繼承คุณสมบัติ HTML
Head และ Body sections
ภายใน <html> แบ่ง 2 ส่วน:
<!DOCTYPE html> <html> <head> </head> <body> </body> </html>
- <head>: ข้อมูลเกี่ยวกับเว็บ โหลด CSS/JS (วันนี้ไม่ครอบคลุม)
- <body>: เนื้อหาหลักที่เห็นบนหน้าเว็บ — ย้ายประโยคแรกเข้าไปใน body
Basic Head Tags
Meta Tags
<meta charset="utf-8"> — กำหนด character encoding UTF-8 มาตรฐานโลก แปลงตัวอักษร/สัญลักษณ์เป็น bytes ให้คอมพิวเตอร์เข้าใจ
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> — สำคัญสำหรับ responsive ให้ความกว้างเว็บเท่าอุปกรณ์ initial-scale=1 = ไซต์ไม่ซูมเข้า/ออก
Title Tag
<title>My First Website</title> — ตั้งชื่อหน้าเว็บ แสดงบนแท็บเบราว์เซอร์
Head 完成版:
<head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>My First Website</title> </head>
Basic Body Tags
Body tags ควบคุมเนื้อหาที่เห็น — หลายตัวคล้ายฟีเจอร์ Word: หัวข้อ ตัวหนา リスト ตาราง
บางตัวใช้ไม่ค่อยแล้วเพราะ CSS ทำได้ดีกว่า แต่ควรรู้จักพื้นฐาน
Header Tags (H1-H6)
<h1> ถึง <h6> — <h1> สำคัญสุด ใช้กับหัวข้อหน้าเว็บ
เพิ่ม <h1>My First Website</h1> <h2>An HTML Playground</h2> ... จนถึง h6
ขนาดฟอนต์เล็กลงจาก h1 ถึง h6 — เว็บส่วนใหญ่ใช้ h1, h2, h3 เท่านั้น
Paragraph (<p>)
<p> แยกเนื้อหาเป็นบล็อก ใช้ lorem ipsum (ข้อความ Latin นิยมใน publishing) เป็น placeholder
<p>Lorem ipsum dolor sit amet...</p> <p>Maecenas feugiat iaculis...</p>
เบราว์เซอร์เพิ่มช่องว่างระหว่างย่อหน้าอัตโนมัติ
Line Break (<br>)
เวลาต้องการขึ้นบรรทัดใหม่แต่ไม่ต้องการช่องว่างของย่อหน้า ใช้ <br>
HTML ไม่ขึ้นบรรทัดใหม่อัตโนมัติ (Enter/Spacebar ในโค้ดไม่มีผล) ต้องใช้ <br> เขียนหลายตัวติดกันได้เพื่อเพิ่มระยะห่าง
Void Elements
<br> ไม่ต้องมี closing tag — เรียกว่า void elements (ว่าง ไม่มีเนื้อหา) HTML5 เขียน <br> ไม่ต้องมี slash (XHTML ต้องมี <br/>)
Style Tags
Tags จัดรูปแบบข้อความ:
<b>— ตัวหนา<i>— ตัวเอียง<u>— ขีดเส้นใต้<em>(emphasized) — มักแสดงเป็น italic<strong>— มักแสดงเป็น bold
ใช้ CSS แทนได้ แต่วันนี้เรียน HTML แบบ vanilla
Horizontal Rule (<hr>)
สร้างเส้นแนวนอนข้ามหน้าเว็บ <hr> — void element ไม่ต้อง closing tag
Anchor Link (<a>)
ลิงก์ = วิธีหลักนำทางอินเทอร์เน็ต <a> = anchor (เหมือนจูงเรือ)
Attribute href (hypertext reference) = URL ปลายทาง
Attribute target = "_blank" เปิดแท็บใหม่ (default เปิดแท็บเดิม)
<a href="https://www.google.com/" target="_blank">Link Text</a>
Images (<img>)
<img> void element ใช้ attribute src (source) = URL รูป
<img src="https://via.placeholder.com/600x300.jpg">
หรือดาวน์โหลดไว้โฟลเดอร์เดียวกัน: <img src="600x300.jpg">
Attribute border = ความหนาขอบ (pixels)
Lists
- Unordered list (<ul>): ไบน่าร้อย (bullet points)
- Ordered list (<ol>): หมายเลข
รายการแต่ละรายการห่อใน <li>
<ul> <li>apples</li> <li>oranges</li> <li>pineapples</li> <li>mangoes</li> <li>dragonfruit</li> </ul>
Nested Lists
ย่อยรายการได้: ใน <li>apples</li> ใส่ <ul> ใหม่ พร้อม <li> ย่อย — จะเยื้องลึกกว่า
Nesting และ Indentation
Tag อยู่ใน Tag อีกตัว = Nesting — ภายใน = Child element ภายนอก = Parent element
Indentation (เยื้อง) สำคัญมาก: ทำให้โค้ดอ่านง่าย เข้าใจโครงสร้าง parent-child ได้ไว — แนวทางปฏิบัติที่ดีสำหรับ HTML, CSS, JS และทุกภาษาโปรแกรมมิ่ง
Table
Table จัดข้อมูลแถว/คอลัมน์ — ใช้ nesting มาก สร้างตารางงบประมาณรายเดือนตัวอย่าง
สร้างตาราง
<table> ครอบทั้งหมด <tr> = table row <th> = table header (ตัวหนา จัดกึ่งกลาง) <td> = table data
<table> <tr> <th>Month</th> <th>Rent</th> <th>Utilities</th> <th>Groceries</th> <th>Eating Out</th> <th>Entertainment</th> </tr> <tr> <td>August</td> <td>$1500</td> <td>$150</td> <td>$350</td> <td>$100</td> <td>$50</td> </tr> </table>
จัดสไตล์ตาราง
Attribute border="1" = ขอบ 1px cellpadding="10" = ช่องว่างในเซลล์ cellspacing="0" = ไม่มีช่องว่างระหว่างเซลล์
Best Practices
ทุกแถวต้องมีจำนวนคอลัมน์เท่ากัน — ไม่งั้น layout จะเสีย
Colspan และ Rowspan
colspan="2" ทำให้ header ครอบ 2 คอลัมน์ (เช่น Utilities ครอบ Electricity + Water)
rowspan="3" ทำให้เซลล์ครอบ 3 แถว (เช่น "Fall" ครอบ June, July, August)
Table 曾用于 Layout
ก่อนมี CSS ใช้ table จัดเลย์เอาต์เว็บ (header, content, footer = 3 rows) — ตอนนี้ใช้น้อยมาก ยกเว้น HTML email ที่ระบบเก่าไม่รองรับ CSS
ปิดท้าย
สร้างเว็บไซต์ HTML พื้นฐานเสร็จแล้ว!
แนะนำแหล่งเรียนต่อ: freeCodeCamp (ฟรี), The Web Developer Bootcamp by Colt Steele (Udemy)