ITDS241 · บทที่ 1 · Lecture 01

Internet & HTML Basics

อินเทอร์เน็ตทำงานอย่างไร ตั้งแต่ TCP/IP, IP address, port, DNS ไปจนถึง WWW และ URL แล้วต่อด้วยภาษา HTML ตั้งแต่โครงสร้างเอกสาร กฎของ tag ไปจนถึง heading, link, list, รูปภาพ, character entity และตาราง

เนื้อหาแยกตามหัวข้อในสไลด์

อินเทอร์เน็ตคืออะไร

อินเทอร์เน็ต (Internet) คือระบบเครือข่ายคอมพิวเตอร์ที่ใหญ่ที่สุดในโลก คอมพิวเตอร์จำนวนมหาศาลที่ต่ออยู่ในระบบนี้สามารถคุยกันรู้เรื่องได้ เพราะทุกเครื่องใช้มาตรฐานและกฎเกณฑ์ในการสื่อสารชุดเดียวกัน ซึ่งก็คือ TCP/IP อินเทอร์เน็ตไม่ได้เกิดขึ้นมาในทันที แต่กำเนิดขึ้นจากงานวิจัยด้านการทหารและวิชาการของสหรัฐอเมริกา (the American research and defense work) ในช่วงทศวรรษ 1970 และ 1980

นิยาม

Internet = ระบบเครือข่ายที่ใหญ่ที่สุดในโลก ซึ่งทุกเครื่องใช้มาตรฐานการสื่อสารเดียวกันคือ TCP/IP

เส้นเวลาด้านล่างสรุปเหตุการณ์สำคัญตามสไลด์ สังเกตว่าหลายสิ่งที่เราจะเรียนต่อในบทนี้ ทั้ง TCP, DNS และ World Wide Web ล้วนเกิดขึ้นในช่วงเวลานี้

  1. 1966เริ่มโครงการ ARPA (Advanced Research Project Agency)
  2. 1969ติดตั้ง ARPANET node แรกที่ UCLA Network Measurement Center
  3. 1973ARPANET เชื่อมต่อระหว่างประเทศไปยังมหาวิทยาลัยอื่นๆ
  4. 1974เผยแพร่รายละเอียดการออกแบบ TCP (Transmission Control Protocol)
  5. 1983ออกแบบ DNS (Domain Name Server)
  6. 1990ARPANET สิ้นสุดลง และ World Wide Web (WWW) ถือกำเนิดขึ้น

ในชีวิตจริง สไลด์แบ่งตัวอย่างการใช้งานอินเทอร์เน็ตออกเป็น 3 กลุ่มใหญ่ ได้แก่

Communication and Social Network

การสื่อสารและเครือข่ายสังคม

Knowledge Resources

แหล่งความรู้

Business and Services

ธุรกิจและบริการ

อินเทอร์เน็ตทำงานอย่างไร (How the Internet works)

เมื่อเราเปิดเว็บไซต์ ข้อมูลที่รับส่งกันไม่ได้เดินทางเป็นก้อนใหญ่ก้อนเดียว แต่ถูกแบ่งออกเป็นชิ้นเล็กๆ ที่เรียกว่า packet แล้วเดินทางผ่าน network หลายวงที่เชื่อมต่อกัน จนไปถึงเครื่องปลายทาง ทุกจุดที่ packet ผ่านคุยกันด้วย TCP/IP เหมือนกันหมด เครื่องปลายทางแต่ละเครื่องมี IP address ของตัวเอง เช่น 216.33.156.119 หรือ 74.125.71.102 ซึ่งกระจายอยู่ตาม network ต่างๆ

ภาพในสไลด์แสดงลำดับเหตุการณ์ว่า ผู้ใช้พิมพ์ชื่อ google.com แล้วได้หมายเลข IP 74.125.71.102 กลับมา จากนั้นข้อมูลจึงถูกส่งออกไปเป็น packet ผ่าน network หลายวงจนถึงเครื่องที่มี IP นั้นซึ่งเก็บข้อมูล (Data) ไว้

การเดินทางของ packet ผ่านหลาย network Client พิมพ์ google.com ได้ IP 74.125.71.102 แล้วส่ง packet ผ่าน Network หลายวงที่ใช้ TCP/IP ไปยังเครื่องปลายทาง 74.125.71.102 ที่เก็บ Data google.com → 74.125.71.102 Client TCP/IP Network TCP/IP 64.236.16.116 Network 216.33.156.119 216.239.61.104 Network 64.58.76.179 packet packet ปลายทาง 74.125.71.102 Data
วาดใหม่จากสไลด์ 7 "How the Internet works" — ข้อมูลถูกแบ่งเป็น packet และเดินทางผ่านหลาย network ที่ใช้ TCP/IP ร่วมกัน

องค์ประกอบหลักของอินเทอร์เน็ต (Internet Components) แบ่งได้เป็น 3 ส่วน โดยส่วน Network ยังมีอุปกรณ์สำคัญอยู่ภายในอีก 2 ชนิด

Client
ฝั่งผู้ใช้หรือคอมพิวเตอร์ที่ขอใช้บริการ โดยส่งคำขอ (Request) ออกไป
Server
ฝั่งผู้ให้บริการหรือคอมพิวเตอร์ที่ให้บริการ ตอบกลับ (Response) ด้านข้อมูลหรือการทำงานต่างๆ เช่น web server, mail server
Network
ระบบเครือข่าย หรือการเชื่อมโยงการทำงานของคอมพิวเตอร์หลายเครื่องเพื่อให้สื่อสารกันได้
Router / Gateway
อุปกรณ์ที่เชื่อมโยง network 2 เครือข่ายเข้าด้วยกัน
Firewall
อุปกรณ์ที่ดูแลความปลอดภัยของข้อมูลที่เดินทางเข้า-ออกระบบเครือข่าย
องค์ประกอบของอินเทอร์เน็ต Client ส่ง Request ผ่าน Router/Gateway และ Firewall เข้าสู่ Network ไปยัง Server แล้ว Server ส่ง Response กลับทางเดิม Request → ← Response Client ผู้ขอใช้บริการ Router / Gateway เชื่อม 2 network Firewall ดูแลความปลอดภัย Network Server web / mail server
Client ↔ Router/Gateway และ Firewall ↔ Network ↔ Server (สไลด์ไม่ได้กำหนดลำดับระหว่าง Router กับ Firewall จึงวาดไว้คู่กัน)

TCP/IP Protocols

TCP/IP protocol คือมาตรฐานและกฎเกณฑ์ในการสื่อสารของระบบอินเทอร์เน็ต ชื่อของมันมาจากโปรโตคอล 2 ตัวที่แบ่งหน้าที่กันชัดเจน ตัวหนึ่งดูแลเรื่อง "หั่นและประกอบข้อมูล" อีกตัวดูแลเรื่อง "ส่งข้อมูลให้ถึงที่หมาย"

TCP Transmission Control Protocol
  • แบ่งข้อมูลออกเป็นส่วนๆ เรียกว่า packet
  • ต่อประกอบ (reassemble) packet เหล่านั้นให้กลับมาเหมือนเดิมที่ปลายทาง
IP Internet Protocol
  • ส่ง packet หรือทำการ routing ให้ถึงจุดหมายปลายทาง
  1. ฝั่งต้นทาง TCP แบ่งข้อมูลออกเป็น packet
  2. IP ส่ง (route) packet แต่ละชิ้นผ่าน network ต่างๆ ไปยังจุดหมาย
  3. ฝั่งปลายทาง TCP ต่อประกอบ packet ทั้งหมดให้กลับเป็นข้อมูลเหมือนเดิม
ข้อควรระวัง

อย่าสลับหน้าที่กัน — TCP แบ่งและประกอบ packet ส่วน IP ส่ง/routing packet (ทั้งสองข้อเป็นคำถามคนละข้อในแบบฝึกหัด)

IP Addressing

IP Address คือชุดตัวเลขที่ทำหน้าที่ระบุที่อยู่ของอุปกรณ์ใน network ปัจจุบันมี 2 เวอร์ชันคือ IPv4 และ IPv6 โดย IPv4 เป็นแบบที่ใช้งานเป็นหลัก

IPv4 กำหนดให้ที่อยู่บนอินเทอร์เน็ตอยู่ในรูป ###.###.###.### คือตัวเลข 4 ชุดคั่นด้วยจุด และแต่ละชุด (###) มีค่าได้ตั้งแต่ 0 ถึง 255 ตัวเลขนี้มาจาก 28 ตามที่สไลด์ระบุ กล่าวคือแต่ละชุดมีค่าที่เป็นไปได้ทั้งหมด 28 = 256 ค่า เมื่อเริ่มนับจาก 0 ค่าสูงสุดจึงเป็น 255

IPv4 = ###.###.###.### · แต่ละ ### มีได้ 2⁸ = 256 ค่า → 0 ถึง 255
IP address (ตัวอย่างในสไลด์)เว็บไซต์
64.236.16.116cnn
64.58.76.179yahoo
216.33.156.119ebay
ข้อควรระวัง

ช่วงค่าคือ 0–255 ไม่ใช่ 1–256 หรือ 0–999 — ถ้าเจอชุดตัวเลขที่เกิน 255 แสดงว่าไม่ใช่ IPv4 ที่ถูกต้องตามรูปแบบนี้

Services and Ports

คอมพิวเตอร์เครื่องเดียวอาจให้บริการได้หลายอย่าง IP address อย่างเดียวจึงยังไม่พอจะบอกว่าผู้ใช้ต้องการบริการไหน TCP/IP จึงมีการระบุ port เพื่อบอกถึง service ที่ผู้ใช้ต้องการ

เปรียบเทียบ

ถ้าเทียบ IP Address เป็นที่อยู่ที่ทำให้เราไปถึงตึกหลังนั้นได้ port ก็ทำหน้าที่เหมือนหมายเลขห้อง ที่พาเราไปสู่จุดหมายบริการที่ต้องการภายในตึก

บริการทุกอย่างบนอินเทอร์เน็ต (All Internet services) ทำงานอยู่บน TCP/IP protocol และแต่ละบริการมี port number และ protocol เฉพาะของตัวเอง ตัวอย่างในสไลด์ ได้แก่

Service / ProtocolPort
HTTP80
FTP21
Telnet23
SMTP25

Domain Name & DNS

ตัวเลข IP อย่าง 74.125.71.102 จำยากสำหรับมนุษย์ Domain name (ชื่อโดเมน) จึงทำหน้าที่เหมือน IP Address แต่อยู่ในรูปแบบของชื่อหรือข้อความ ที่อ่านและจำได้ง่ายกว่า

Domain name มีโครงสร้างแบบลำดับชั้น (Hierarchy) เริ่มจากจุดบนสุดคือ root (.) แล้วแตกออกเป็นโดเมนระดับบน ซึ่งสไลด์ยกตัวอย่างความหมายไว้ดังนี้ .com (commercial), .edu (education), .gov (government), .org (organization), .th (Thailand) นอกจากนี้ยังมี .uk และ .jp ในแผนภาพ จากนั้นแต่ละโดเมนแตกย่อยลงไปเรื่อยๆ เช่น .th.ac.mahidolwww หรือ student

โครงสร้างลำดับชั้นของ Domain name และการทำงานของ DNS root แตกเป็น .org .com .edu .th .uk .jp; .com แตกเป็น .cnn และ .google; .cnn มี www; .google มี www และ news; .th แตกเป็น .ac แล้ว .mahidol ซึ่งมี www และ student; ด้านล่าง DNS Server แปลง www.google.com เป็น 66.249.89.104 . (root) .org .com .edu .th .uk .jp .cnn .google www www news www.google.com .ac .mahidol www student www.google.com Domain Name DNS Server 66.249.89.104 IP address
วาดใหม่จากสไลด์ 12 — ครึ่งบนคือลำดับชั้นของ domain name (ไฮไลต์เส้นทาง www.google.com) ครึ่งล่างคือ DNS ที่จับคู่ชื่อกับ IP
นิยาม

Domain Name Server (DNS) ทำหน้าที่จับคู่ระหว่าง IP Address กับ Domain name เช่น www.google.com. = 66.249.89.104

สรุปความสัมพันธ์ของ 3 หัวข้อนี้ได้ว่า ผู้ใช้จำชื่อโดเมน → DNS แปลงเป็น IP address เพื่อหาเครื่อง → port บอกว่าต้องการบริการไหนบนเครื่องนั้น

World Wide Web (WWW) คืออะไร

WWW ย่อมาจาก World Wide Web หรือเรียกสั้นๆ ว่า "the Web" เปิดตัวในปี 1992 โดย Tim Berners-Lee WWW เป็นบริการข้อมูลรูปแบบหนึ่งบนอินเทอร์เน็ต (ไม่ใช่ตัวอินเทอร์เน็ตเอง) ที่ผู้ใช้สามารถเลือกอ่านข้อมูลซึ่งประกอบด้วยข้อความ รูปภาพ และสื่ออื่นๆ รวมถึงเชื่อมโยงไปยังข้อมูลอื่น (navigation) ได้ด้วย hyperlinks และ WWW ใช้ HTTP protocol ในการสื่อสารและแลกเปลี่ยนข้อมูล

ข้อควรระวัง: ปีของ WWW

สไลด์มีปีของ WWW 2 จุด — เส้นเวลาประวัติอินเทอร์เน็ตเขียนว่าปี 1990 "World Wide Web (WWW) has been created" ส่วนสไลด์ "What is the WWW?" เขียนว่า Introduced in 1992 by Tim Berners-Lee ถ้าโจทย์ถามว่า เปิดตัว (introduced) ปีใดและโดยใคร คำตอบคือ 1992 โดย Tim Berners-Lee

WWW ทำงานอย่างไร

การทำงานของเว็บคือการคุยกันระหว่าง 2 ฝั่งผ่านอินเทอร์เน็ต สไลด์นิยามคำศัพท์ที่เกี่ยวข้องไว้ 4 คำ

Web Server
ฝั่งผู้ให้บริการเรื่องเว็บ ที่ให้บริการข้อมูลหรือหน้าเว็บ
Web pages
หน้าเว็บที่ประกอบด้วยชุดคำสั่งพื้นฐาน เช่น HTML
Web Client
ฝั่งผู้ใช้บริการเรื่องเว็บ เช่น อ่าน หรือ request ข้อมูล
Web browser
โปรแกรมที่ใช้ในการอ่านข้อมูลเว็บหรือหน้าเว็บ (ทำงานอยู่ฝั่ง Web Client)
WWW ทำงานอย่างไร Web Browser ฝั่ง Web Client ส่ง HTTP Request ผ่าน Internet ไปยัง Web Server ซึ่งเก็บ Web Pages ที่เป็น html แล้ว Web Server ส่ง Response ที่เป็น html กลับมา Web Client Web Browser Internet Web Server html html html html Web Pages HTTP Request → ← Response (html)
วาดใหม่จากสไลด์ 15 — browser ขอหน้าเว็บด้วย HTTP Request และได้ html กลับมาเป็น Response

Browser ได้หน้าเว็บมาอย่างไร: URL

เมื่อผู้ใช้ต้องการเปิดหน้าเว็บ browser จะส่ง HTTP request ไปยัง Web Server ภายใน HTTP request นั้นจะมี URL (Uniform Resource Locator) ซึ่งเป็นตัวระบุ resource หรือ service ที่ต้องการ URL แบบเต็มประกอบด้วยหลายส่วนที่นำความรู้จากหัวข้อก่อนหน้ามาใช้ทั้งหมด ลองคลิกแต่ละส่วนของ URL ตัวอย่างจากสไลด์ด้านล่างเพื่อดูคำอธิบาย

://@:

protocol · http
โปรโตคอลที่ใช้สื่อสาร — เว็บ (WWW) ใช้ HTTP ในการแลกเปลี่ยนข้อมูล
username:password · john:secret
ชื่อผู้ใช้และรหัสผ่าน เป็นส่วนที่มีหรือไม่มีก็ได้ (ถ้ามี จะอยู่ก่อนเครื่องหมาย @)
domain name · www.example.com
ชื่อของเครื่องปลายทางในรูปแบบข้อความ ซึ่ง DNS จะจับคู่กับ IP address ให้
port · 8080
หมายเลข port ที่บอกว่าต้องการ service ใดบนเครื่องนั้น (เหมือนหมายเลขห้องในตึก) เขียนต่อจากโดเมนหลังเครื่องหมาย :
path · /demo/index.html
ตำแหน่งของ resource ที่ต้องการบน server — ในตัวอย่างนี้คือไฟล์ index.html ภายใน /demo/

Browser แสดงผลหน้าเว็บอย่างไร

เมื่อได้หน้าเว็บกลับมาแล้ว browser มีหน้าที่แปลชุดคำสั่งในหน้า Web page เพราะแต่ละหน้าไม่ได้มีแค่เนื้อหา แต่ประกอบด้วยชุดคำสั่งที่บอกลักษณะการแสดงผล (how content to be displayed) เช่น การทำย่อหน้า หรือการจัด layout ของหน้าเว็บ ชุดคำสั่งหลักที่ใช้คือภาษา HTML และอาจเพิ่มความสวยงามด้วย CSS

การพัฒนาเว็บเพจ (Develop a Web Page)

งานพัฒนาเว็บแบ่งได้ตามส่วนของระบบที่ลงมือทำ สไลด์อ้างอิงแผนผังจาก roadmap.sh ดังนี้

Front-end

HTML, CSS, JavaScript — ส่วนที่ผู้ใช้เห็นและโต้ตอบด้วยโดยตรง

Back-end

Database, API, Framework — ส่วนที่ทำงานอยู่เบื้องหลัง

Full-stack

ทำได้ทั้ง Front-end และ Back-end

หัวข้อในวิชานี้ (course roadmap) — Front-end: HTML, CSS, JavaScript (Core) · Back-end: Node.JS, Web Service (API), Connection to DB · Other trends + framework: React

  1. Introduction to Internet, Overview, and Basic HTML and HTML5 Part 1 บทนี้
  2. Basic HTML and HTML5 Part 2
  3. Cascading Style Sheet Part 1
  4. Cascading Style Sheet Part 2
  5. JavaScript Part 1
  6. JavaScript Part 2
  7. JavaScript Part 3
  8. Web Service
  9. Introduction to Node.js Part 1
  10. Introduction to Node.js Part 2
  11. Introduction to Node.js Part 3
  12. Web Service with Node.js
  13. Trends in Web Application Framework

HTML คืออะไร

HTML ย่อมาจาก HyperText Markup Language เป็นภาษาหลักในการเขียนเว็บแอปพลิเคชัน HTML ประกอบด้วย markup tags ซึ่งเป็นตัวบอก browser ว่าให้แสดงผลเนื้อหาอย่างไร ไฟล์ HTML 1 ไฟล์เรียกว่า HTML Document และใช้นามสกุล .html หรือ .htm

ตัวอย่างเอกสาร HTML จากสไลด์ ในที่นี้ <p> ทำให้เนื้อหาแสดงผลเป็นย่อหน้า (paragraph)

<!DOCTYPE html>
<html lang="en">
<body>
    <section>
        <p>This is an example of
            Markup language.</p>
        <p>Tags tell browsers how
            to show the contents</p>
    </section>
</body>
</html>

สไลด์บอกว่า HTML เรียนรู้ได้ง่าย สิ่งที่ต้องรู้คือวิธีใช้ tag ต่างๆ และต้องมี text editor ธรรมดาสำหรับเขียนเอกสาร เช่น Visual Studio Code, Notepad, Notepad++ เมื่อเขียนเสร็จก็เปิดไฟล์ด้วย browser ได้ทันที (Easy to code, Run on Browsers)

คำแนะนำจากสไลด์

ถ้าอยากเป็น web developer ที่เก่ง ควรใช้ plain text editor ในการฝึกเขียน HTML

ประวัติของ HTML

  1. 1991Tim Berners-Lee สร้าง HTML
  2. 1995HTML2
  3. 1997HTML3
  4. 1999HTML4
  5. 2000XHTML
  6. 2014HTML5
  7. 2017HTML5.2

โครงสร้าง Tag พื้นฐาน

เอกสาร HTML ประกอบด้วย 2 สิ่ง คือ Content ซึ่งเป็นเนื้อหาของหน้านั้นๆ เช่น ข้อความ และ Tag (Element) ซึ่งเป็นชุดคำสั่งที่บอกลักษณะการแสดงผลของเนื้อหา รูปแบบทั่วไปคือมี tag เปิด (opening tag) อยู่หน้าเนื้อหา และ tag ปิด (closing tag) ที่มีเครื่องหมาย / อยู่หลังเนื้อหา

<tag-name>Content to be displayed</tag-name>
<!-- ↑ Opening tag                  ↑ Closing tag -->
กฎ: case insensitive

HTML tags เป็น case insensitive คือจะเขียนชื่อ tag ด้วยตัวอักษรภาษาอังกฤษพิมพ์ใหญ่หรือพิมพ์เล็กก็ได้ (<P> กับ <p> ให้ผลเหมือนกัน) แต่นิยมใช้ตัวพิมพ์เล็ก

กฎการซ้อน Tag (Nesting Tags Rules)

tag เปิดและ tag ปิดกำหนดขอบเขต (region) ที่ tag นั้นมีผล ขอบเขตเหล่านี้ซ้อนกันได้ (nested) แต่ห้ามเหลื่อมกัน (not overlap) กล่าวคือถ้าเปิด tag1 แล้วเปิด tag2 ข้างใน ต้องปิด tag2 ให้เรียบร้อยก่อนจึงจะปิด tag1 ได้ เหมือนกล่องเล็กต้องอยู่ในกล่องใหญ่ทั้งใบ จะโผล่ครึ่งหนึ่งออกนอกกล่องใหญ่ไม่ได้

การซ้อน tag ที่ถูกต้องเทียบกับการเหลื่อมที่ผิด แถวบน: tag1 ครอบ tag2 ทั้งหมด ปิด tag2 ก่อนปิด tag1 ถูกต้อง แถวล่าง: ปิด tag1 ก่อน tag2 ทำให้ขอบเขตเหลื่อมกัน ผิด <tag1> Some text <tag2> more text </tag2> and more. </tag1> ✓ ซ้อนกัน (nested) <tag1> Some text <tag2> more text </tag1> and more. </tag2> ✗ เหลื่อม (overlap)
วาดใหม่จากสไลด์ 27 — เส้นเชื่อม tag เปิดกับ tag ปิดของตัวเดียวกัน แถวล่างเส้นของ tag1 กับ tag2 ตัดกัน = overlap
ข้อควรระวัง

ลำดับการปิดต้องย้อนกลับจากลำดับการเปิด: เปิด tag1 → tag2 ต้องปิด tag2 → tag1 เสมอ

Closing Tags และ Unknown Tags

tag ไม่จำเป็นต้องมี tag ปิดเสมอไป ตัวอย่างเช่น <br> (line break) ซึ่งเป็นเพียงการบอกตำแหน่งให้ขึ้นบรรทัดใหม่ ไม่ได้ครอบเนื้อหาใดๆ จึงไม่มี tag ปิด

อีกกฎที่สำคัญคือ Unknown tags are ignored — ถ้าเขียนชื่อ tag ผิด หรือสร้าง tag ขึ้นมาเอง browser ก็ยังทำงานต่อได้โดยไม่แสดง error แต่จะข้ามการแปลความหมายของ tag ที่ไม่ได้บัญญัติไว้ไป

ทำไมถึงออกแบบแบบนี้

สไลด์ให้เหตุผลว่า เพื่อให้สะดวกต่อการเพิ่ม tag ใหม่ๆ ในอนาคต

ข้อควรระวัง

พิมพ์ชื่อ tag ผิด browser ก็ไม่แสดง error ให้เห็น — อย่าคิดว่าไม่มี error แปลว่าเขียนถูก

Tag Attributes และ Quote Styles

ภายใน opening tag อาจมี attributes ซึ่งเป็นส่วนเก็บข้อมูลหรือ option เพิ่มเติมของ tag นั้นๆ เช่น attribute lang ใน <html> ใช้ระบุภาษาของหน้าเพจ attributes เขียนในรูปแบบ name="value" (สามารถค้น "HTML reference" ออนไลน์ได้ที่ W3Schools)

<html lang="en">

เรื่องเครื่องหมายคำพูด (Quote styles): ค่าของ attribute ควรอยู่ในเครื่องหมายคำพูดเสมอ แบบ double quote (") เป็นแบบที่ใช้บ่อยที่สุด แต่ single quote (') ก็ใช้ได้เช่นกัน

กรณีพิเศษ

ถ้าค่าของ attribute มีเครื่องหมาย double quote อยู่ในตัวเอง ต้องใช้ single quote ครอบแทน เพื่อไม่ให้ quote ข้างในไปปิดค่า attribute ก่อนเวลา

value='John "ShotGun" Nelson' → ค่าที่ได้คือ John "ShotGun" Nelson

โครงสร้างหลักของเอกสาร HTML (Global Structure)

Tagคำอธิบาย
<!DOCTYPE html>การประกาศชนิดเอกสาร HTML ต้องอยู่เป็นสิ่งแรกสุดของเอกสาร ก่อน tag <html>
<html>กำหนดเอกสาร HTML เป็น container ที่ครอบ element อื่นทั้งหมด (ยกเว้น <!DOCTYPE>)
<head>ส่วนหัวของเอกสาร ใส่ title ของเอกสาร, scripts, styles, meta information และอื่นๆ
<body>ส่วนเนื้อหาของเอกสาร เช่น ข้อความ, hyperlinks, รูปภาพ, ตาราง, ลิสต์
<title>ชื่อเรื่องของเอกสาร ที่แสดงบน browser toolbar

เมื่อนำ tag ทั้ง 5 ตัวมารวมกัน จะได้เอกสาร HTML ที่สมบูรณ์ตามตัวอย่างในสไลด์ ข้อความ "I Love HTML" จะไปแสดงบนแถบของ browser ไม่ได้อยู่ในตัวหน้าเว็บ ส่วนสิ่งที่อยู่ใน <body> คือทุกอย่างที่แสดงบนหน้า

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>I Love HTML</title>
    </head>
    <body>
        Everything displayed on your page
        will be in here.
    </body>
</html>
Tips จากสไลด์

เริ่มทุกไฟล์ด้วย tag พื้นฐานเหล่านี้เสมอ: <!DOCTYPE>, <html>, <head>, <title>, <body>

เยื้อง (indent) element ที่ซ้อนกัน เพื่อให้อ่านโค้ดง่ายขึ้น — สไลด์ 32 กับ 33 แสดงโค้ดชุดเดียวกันที่เยื้องไม่สม่ำเสมอกับที่เยื้องเป็นระเบียบ ซึ่งแบบหลังเห็นได้ทันทีว่า tag ไหนอยู่ข้างในอะไร

Comments

ถ้าต้องการเขียนหมายเหตุไว้ในซอร์สโค้ด HTML ให้ใช้รูปแบบด้านล่าง browser จะไม่แสดงผล comment ออกมาบนหน้าเว็บ

<!-- This is a comment -->
ข้อควรระวัง

ต้องมีเครื่องหมายตกใจ (!) หลังวงเล็บเปิดเท่านั้น (<!--) แต่ไม่ต้องมีก่อนวงเล็บปิด (-->)

HTML Markup Validation

สไลด์ยกคำกล่าวจาก validator.w3.org ว่า "เช่นเดียวกับทุกภาษา ภาษาเหล่านี้มีไวยากรณ์ คำศัพท์ และ syntax ของตัวเอง และเอกสารทุกฉบับที่เขียนด้วยภาษาคอมพิวเตอร์เหล่านี้ควรทำตามกฎนั้น" สำหรับการเขียน HTML ให้ถูกหลักการ โดยเฉพาะมือใหม่ ควรนำโค้ดไปตรวจสอบกับเครื่องมืออย่าง https://validator.w3.org/ สไลด์แสดงภาพเปรียบเทียบผลตรวจของ Valid HTML กับ HTML with some errors

Heading Tags <h1> ถึง <h6>

หัวข้อ (headings) ใช้ tag <h1> ถึง <h6> โดย <h1> สร้างหัวข้อขนาดใหญ่ที่สุด และ <h6> สร้างหัวข้อขนาดเล็กที่สุด เมื่อใช้ tag กลุ่มนี้ browser จะเพิ่มบรรทัดว่างทั้งก่อนและหลังข้อความให้อัตโนมัติ ไม่ต้องใส่เอง

<h1>This is a heading h1</h1>
<h2>This is a heading h2</h2>
<h3>This is a heading h3</h3>
<h4>This is a heading h4</h4>
<h5>This is a heading h5</h5>
<h6>This is a heading h6</h6>

Paragraph Tag <p>

<p> ใช้สร้าง paragraph หรือย่อหน้า browser จะจัดย่อหน้าให้โดยอัตโนมัติ มีพฤติกรรมสำคัญ 2 อย่างที่ต้องจำ

  • ยุบช่องว่าง: ถ้าในโค้ดมีการเว้นวรรคหลายครั้งติดกันภายในย่อหน้า browser จะลดเหลือแค่วรรคเดียว
  • ขึ้นบรรทัดใหม่หลังย่อหน้า: ทุกครั้งที่ใช้ <p> จะมีการเพิ่มบรรทัดใหม่หลังย่อหน้าให้อัตโนมัติ

ในตัวอย่างจากสไลด์ ย่อหน้าที่สองมีช่องว่างหลายช่องและขึ้นบรรทัดใหม่ในโค้ด แต่ผลลัพธ์ใน browser ยังเป็นบรรทัดเดียวที่มีเว้นวรรคปกติ

<p>This is a paragraph</p>
<p>This is another
        paragraph</p>

Line Break Tag <br>

ถ้าข้อความยาวเกินความกว้างของหน้าต่าง browser จะปรับให้ขึ้นบรรทัดใหม่เองอัตโนมัติ แต่ในทางกลับกัน ถึงแม้ในชุดคำสั่งจะกด Enter ขึ้นบรรทัดใหม่หลายครั้ง browser ก็ไม่ได้ขึ้นบรรทัดใหม่ตาม ดังผลลัพธ์ของตัวอย่างจากสไลด์ด้านล่างที่ข้อความต่อกันเป็นบรรทัดเดียว

<p> Hello,

    I want

    a new line.</p>

ถ้าต้องการขึ้นบรรทัดใหม่ ณ ตำแหน่งที่ต้องการจริงๆ ต้องใช้ <br> ซึ่งไม่ต้องมี closing tag

<p>This <br> is a para <br> graph with line breaks</p>
ข้อควรระวัง

การกด Enter ในซอร์สโค้ดไม่มีผลต่อการแสดงผล — ต้องใช้ <br> เท่านั้นจึงจะขึ้นบรรทัดใหม่บนหน้าเว็บ ถ้าเขียนแยกบรรทัดในโค้ดโดยไม่มี <br> ข้อความจะต่อกันเป็นบรรทัดเดียว

Absolute Path, Relative Path และ Email Link

Absolute path

URL แบบเต็ม ใช้เมื่อต้องการอ้างอิงที่อยู่ของ resource ที่เข้าถึงได้ผ่านอินเทอร์เน็ต

<a href="http://www.google.com">Google</a>
Relative path

การอ้างอิงที่อยู่ของ resource ที่เข้าถึงได้จาก document ปัจจุบัน เช่น อยู่ใน directory เดียวกัน

<a href="filename.html">click here</a>

Email link: ใช้ <a> ระบุที่อยู่ email ได้ โดยใส่คำว่า mailto: ตามด้วย email ใน attribute href

<a href="mailto:abc@example.com">Send Email</a>

Lists

Ordered list (ลิสต์แบบมีลำดับ) เริ่มต้นด้วย <ol> และแต่ละรายการเริ่มด้วย <li> browser จะใส่ตัวเลขลำดับให้อัตโนมัติ

<ol>
   <li>Google</li>
   <li>Bing</li>
   <li>Baidu</li>
   <li>Yahoo!</li>
   <li>Yandex</li>
</ol>

Unordered list (ลิสต์แบบไม่มีลำดับ) เริ่มต้นด้วย <ul> และแต่ละรายการเริ่มด้วย <li> เช่นกัน แต่จะแสดงเป็นจุด (bullet point) แทนตัวเลข

<ul>
   <li>Cooking</li>
   <li>Cross stitching</li>
   <li>Gaming</li>
   <li>Gardening</li>
   <li>Shooting</li>
</ul>

Nested list คือการใส่ลิสต์ซ้อนลงไปภายใน <li> ของลิสต์แม่ สังเกตว่า <ul> ตัวในอยู่ก่อน </li> ของรายการนั้น ซึ่งเป็นไปตามกฎการ nesting

<ul>
    <li> A few New England states:
        <ul>
            <li>Vermont</li>
            <li>New Hampshire</li>
            <li>Maine</li>
        </ul>
    </li>
    <li> Two Midwestern states:
        <ul>
            <li>Michigan</li>
            <li>Indiana</li>
        </ul>
    </li>
</ul>

Definition list เริ่มต้นด้วย <dl> แต่ละรายการประกอบด้วยคู่ของ <dt> (คำ) ตามด้วย <dd> (คำอธิบาย/คำนิยาม)

<dl>
   <dt>HTML</dt>
   <dd>Hypertext Markup Language</dd>
   <dt>CSS</dt>
   <dd>Cascading Style Sheets</dd>
</dl>

ภายใน <dt> สามารถใส่ <a> เพื่อทำเป็น list with link ได้

<dl>
   <dt><a href="https://www.w3schools.com/html/">HTML</a></dt>
   <dd>Hypertext Markup Language</dd>
   <dt><a href="https://www.w3schools.com/css/">CSS</a></dt>
   <dd>Cascading Style Sheets</dd>
</dl>
หมายเหตุจากสไลด์

tag ส่วนใหญ่ใน HTML สามารถซ้อน (nest) กันเพื่อสร้างเนื้อหาใหม่ได้ — เช่น ลิสต์ในลิสต์ หรือลิงก์ใน definition list

Images <img>

การใส่รูปภาพในเอกสาร HTML ทำได้โดยใช้ <img src="URL"> ซึ่ง attribute src ระบุ URL หรือ path ไปยังไฟล์รูปภาพ และ <img> ไม่มี closing tag รูปแบบไฟล์รูปภาพที่นิยมใช้บนเว็บมากที่สุด ได้แก่

รูปแบบชื่อเต็ม
GIFGraphic Interchange Format
JPEGJoint Photographic Experts Group
PNGPortable Network Graphics
SVGScalable Vector Graphics

เพื่อให้เว็บเข้าถึงได้ (accessible) กับกลุ่มผู้ใช้มากขึ้น เช่น ผู้ใช้ที่มีปัญหาในการเข้าถึงรูปภาพ หรือผู้ใช้ที่พิการทางสายตาและต้องใช้ screen reader เราสามารถใช้ attribute alt เพิ่มคำอธิบายของรูปภาพ

<!-- Use URL or path to give the src of an image -->
<img src="Images/Usagi_Clap.gif" alt="A Rabbit is clapping">
ทำไมต้องมี alt

ผู้ใช้ที่มองไม่เห็นรูปจะรับรู้เนื้อหาของรูปผ่านข้อความใน alt — ไม่มี alt ก็เท่ากับไม่มีข้อมูลว่ารูปนั้นคืออะไร

Character Entities

ตัวอักษรพิเศษบางตัวเป็นสัญลักษณ์ที่ต้องใช้ชุดคำสั่งพิเศษเรียกว่า character entities ตัวอย่างที่ชัดที่สุดคือเครื่องหมาย < ถ้าพิมพ์ลงไปตรงๆ browser อาจเข้าใจว่าเป็นจุดเริ่มต้นของ tag character entity ประกอบด้วย 3 ส่วนเรียงกัน

  1. เครื่องหมาย ampersand &
  2. entity name หรือ # ตามด้วย entity number
  3. เครื่องหมาย semicolon ;

ตัวอย่างเช่น ถ้าต้องการแสดงเครื่องหมายน้อยกว่า (<) บน browser ใช้ได้ทั้ง &lt; (ชื่อ) หรือ &#60; (หมายเลข)

<p>5 &lt; 10 และ 10 &#62; 5</p>
<p>&copy; Tom &amp; Jerry</p>
ข้อควรระวัง

character entities เป็น case sensitive — ต่างจากชื่อ tag ที่เป็น case insensitive (เช่น ต้องเขียน &lt; ตามตาราง)

ผลลัพธ์คำอธิบายEntityEntity Number
(เว้นวรรค)non-breaking space&nbsp;&#160;
<less than&lt;&#60;
>greater than&gt;&#62;
&ampersand&amp;&#38;
"quotation mark&quot;&#34;
'apostrophe&apos;&#39;
¢cent&cent;&#162;
£pound&pound;&#163;
¥yen&yen;&#165;
§section&sect;&#167;
©copyright&copy;&#169;
®trademark&reg;&#174;
×multiplication&times;&#215;
÷division&divide;&#247;

HTML Table

การใส่ข้อมูลในรูปแบบตารางใช้ <table> … </table> ภายในตารางประกอบด้วยแถว (row) <tr>…</tr> และในแต่ละแถวมีหลัก (column) <td>…</td> ข้อมูลในเซลล์จะเป็นข้อความ รูปภาพ หรือ tag อื่นๆ ก็ได้ แต่ต้องอยู่ระหว่าง <td> กับ </td> เท่านั้น

ข้อควรระวัง

โดยค่าเริ่มต้น (by default) ตารางจะไม่มีเส้นขอบ ต้องกำหนด border เองจึงจะเห็นเส้น — สไลด์ใช้ style ด้านล่างใน <head> ซึ่งรายละเอียดของ CSS จะได้เรียนในอีก 2 สัปดาห์

<head>
    <style>
        table, tr, th, td {
            border: 1px solid black;
        }
    </style>
</head>
<body>
    <table>
        <tr>
            <th>States</th>
            <th>Abbr.</th>
            <th>Capital</th>
        </tr>
        <tr>
            <td>Pennsylvania</td>
            <td>PA</td>
            <td>Harrisburg</td>
        </tr>
        <tr>
            <td>New York</td>
            <td>NY</td>
            <td>Albany</td>
        </tr>
    </table>
</body>

Heading cells: เซลล์หัวตารางกำหนดด้วย <th></th> แทน <td> ข้อความใน <th> จะถูกตั้งเป็นตัวหนาและจัดกึ่งกลางอัตโนมัติ ส่วนข้อความใน <td> เป็นตัวปกติและชิดซ้าย (เห็นความต่างได้ในผลลัพธ์ด้านบน)

Empty Cells และ Spanning Cells

Empty cell (เซลล์ว่าง): ใช้ &nbsp; ใส่ไว้ในเซลล์

<td>&nbsp;</td>

Spanning cells: เซลล์หนึ่งสามารถขยาย (span) ให้ครอบคลุมหลายแถวหรือหลายหลักได้ด้วย attribute 2 ตัว

colspan

ขยายเซลล์ให้ครอบคลุมหลายหลัก<td colspan="3"> ขยายกว้างไปทางขวา 3 หลักนับจากเซลล์ปัจจุบัน

rowspan

ขยายเซลล์ให้ครอบคลุมหลายแถว<td rowspan="2"> ขยายลงไปด้านล่าง 2 แถวนับจากเซลล์ปัจจุบัน

ตัวอย่างในสไลด์ใช้ทั้งสองแบบพร้อมกัน: เซลล์รูปภาพใช้ rowspan="3" ให้สูงเท่า 3 แถว และเซลล์หัวข้อ "Character: Usagi" ใช้ colspan="3" ให้กว้างเท่า 3 หลัก ภายในเซลล์ยังใส่ <img>, <h1> และ <p> ได้ เพราะเนื้อหาอยู่ระหว่าง tag ของเซลล์

<table>
    <tr>
       <td rowspan = "3">
          <img src="Usagi_Tired.gif" alt = "Picture of a Usagi" />
       </td>
       <th colspan = "3">
          <h1>Character: Usagi</h1>
          <p>Illustrator: Kanahei (カナヘイ) </p>
       </th>
    </tr>
    <tr>
       <th>Color</th>
       <th>Type</th>
       <th>Best friends</th>
    </tr>
    <tr>
       <td>Light Pink</td>
       <td>Rabbit</td>
       <td>Piske</td>
    </tr>
</table>
ข้อควรระวัง

จำคู่ให้แม่น: colspan = column = กว้างขึ้นทางแนวนอน · rowspan = row = สูงขึ้นทางแนวตั้ง แถวที่ 2 และ 3 ของตัวอย่างนี้จึงมีแค่ 3 เซลล์ เพราะหลักแรกถูกเซลล์รูปภาพจองไว้แล้ว

HTML Style Guide

นอกจากเขียนให้ browser แสดงผลได้แล้ว ควรเขียนให้เป็นระเบียบตามแนวทางต่อไปนี้ (อ้างอิง W3Schools HTML5 syntax)

  • ใช้ document type ที่ถูกต้อง คือ <!DOCTYPE html>
  • ปิด HTML element ทุกตัวที่มี tag ปิด
  • ใช้ตัวพิมพ์เล็กสำหรับชื่อ element และชื่อ attribute
  • ใช้ double quote สำหรับค่าของ attribute เสมอ
  • เว้นบรรทัดว่างและเยื้อง (indentation) ให้เหมาะสม
  • ใส่ช่องว่างรอบเครื่องหมาย = ให้เหมาะสม (ปกติไม่เว้น)
<a href="https://www.google.com/">Google</a>

Cheat sheet

ปี port URL tag หลัก entity และกฎที่มักออกสอบของบทที่ 1 รวมไว้ในหน้าเดียว

01 Timeline: Internet & HTML

Internet
1966
ARPA project
1969
ARPANET node แรก @ UCLA
1973
ARPANET เชื่อมต่อต่างประเทศ
1974
เผยแพร่การออกแบบ TCP
1983
ออกแบบ DNS
1990
ARPANET จบ · WWW created
1992
WWW introduced โดย Tim Berners-Lee
HTML
1991
Tim Berners-Lee สร้าง HTML
1995
HTML2
1997
HTML3
1999
HTML4
2000
XHTML
2014
HTML5
2017
HTML5.2

02 Services & Ports

HTTP
80
FTP
21
Telnet
23
SMTP
25

IP = ที่อยู่ตึก · port = หมายเลขห้อง · TCP แบ่ง/ประกอบ packet · IP ส่ง/routing · IPv4 แต่ละชุด 0–255 · DNS จับคู่ชื่อโดเมน ↔ IP

03 URL anatomy

http://john:secret@www.example.com:8080/demo/index.html

protocol
http
user:pass
john:secret (ถ้ามี · อยู่ก่อน @)
domain
www.example.com
port
8080 (หลัง :)
path
/demo/index.html

04 Global Structure

<!DOCTYPE html>
บรรทัดแรกสุด ก่อน <html>
<html>
container ของทุก element (ยกเว้น DOCTYPE)
<head>
title, scripts, styles, meta
<title>
ชื่อบน browser toolbar
<body>
เนื้อหาที่แสดงบนหน้า

05 Character entities

ผลลัพธ์EntityNumberผลลัพธ์EntityNumber
space&nbsp;&#160;¢&cent;&#162;
<&lt;&#60;£&pound;&#163;
>&gt;&#62;¥&yen;&#165;
&&amp;&#38;§&sect;&#167;
"&quot;&#34;©&copy;&#169;
'&apos;&#39;®&reg;&#174;
×&times;&#215;÷&divide;&#247;

รูปแบบ: & + ชื่อ (หรือ # + หมายเลข) + ; · entity เป็น case sensitive

06 กฎที่ต้องจำ

  • Nesting: ซ้อนได้ ห้าม overlap — ปิดย้อนลำดับการเปิด
  • Tag: case insensitive (นิยมพิมพ์เล็ก)
  • Entity: case sensitive
  • Attribute: name="value" ใน opening tag · ค่ามี " อยู่ข้างใน → ครอบด้วย '
  • ไม่มี closing tag: <br>, <img>
  • Unknown tag: ถูกข้าม ไม่ error
  • Enter ในโค้ด ไม่ขึ้นบรรทัด → ใช้ <br>
  • Comment: <!-- ... --> (! หลังวงเล็บเปิดเท่านั้น)
  • th ตัวหนา+กึ่งกลาง · table ไม่มีเส้นขอบโดย default

แบบฝึกหัด 20 ข้อ

เลือกคำตอบให้ครบแล้วกด "ตรวจคำตอบ" ด้านล่าง ระบบจะเฉลยพร้อมคำอธิบายทุกข้อ

01TCP (Transmission Control Protocol) ทำหน้าที่หลักคืออะไร?

TCP แบ่งข้อมูลออกเป็นส่วนๆ เรียกว่า packet และต่อประกอบ packet ให้กลับมาเหมือนเดิม · การส่ง/routing packet เป็นหน้าที่ของ IP · การแปลงชื่อโดเมนเป็น IP เป็นหน้าที่ของ DNS

02IP (Internet Protocol) ทำหน้าที่หลักคืออะไร?

IP ทำหน้าที่ส่ง packet หรือทำการ routing ให้ถึงจุดหมายปลายทาง · การแบ่งข้อมูลเป็นส่วนๆ คือหน้าที่ของ TCP · การแปลชุดคำสั่งเพื่อแสดงผลเป็นหน้าที่ของ browser

03รูปแบบ IPv4 แต่ละส่วน (###) มีค่าได้ในช่วงใด?

IPv4 อยู่ในรูป ###.###.###.### แต่ละ ### มีค่าได้ 28 = 256 ค่า เริ่มนับจาก 0 จึงเป็น 0 ถึง 255 (เช่น 64.236.16.116)

04Port หมายเลข 80 ใช้กับ service ใด?

HTTP = 80 · FTP = 21 · Telnet = 23 · SMTP = 25

05Domain Name Server (DNS) มีหน้าที่อะไร?

DNS จับคู่ระหว่าง IP Address กับ Domain name เช่น www.google.com. = 66.249.89.104 · การเก็บหน้าเว็บเป็นหน้าที่ของ Web Server · การแบ่ง packet เป็นหน้าที่ของ TCP

06WWW (World Wide Web) เปิดตัวขึ้นในปีใด และโดยใคร?

"Introduced in 1992 by Tim Berners-Lee" · 1969 คือปีที่ติดตั้ง ARPANET node แรก · 1974 เผยแพร่การออกแบบ TCP · 1983 ออกแบบ DNS

07WWW ใช้ protocol ใดในการสื่อสารและแลกเปลี่ยนข้อมูล?

WWW ใช้ HTTP protocol ในการสื่อสารและแลกเปลี่ยนข้อมูล — browser ส่ง HTTP request ไปยัง Web Server แล้วได้ response กลับมา

08ในโครงสร้าง URL http://user:pass@www.example.com:8080/demo/index.html ส่วน "8080" คืออะไร?

http = protocol · user:pass = username:password · www.example.com = domain name · 8080 (หลังเครื่องหมาย :) = port · /demo/index.html = path

09Router/Gateway ทำหน้าที่อะไรในองค์ประกอบของอินเทอร์เน็ต?

Router or gateway เป็นอุปกรณ์ที่เชื่อมโยง network 2 เครือข่ายเข้าด้วยกัน · การดูแลความปลอดภัยของข้อมูลเข้า-ออกเป็นหน้าที่ของ Firewall

10HTML tag เป็น case sensitive หรือไม่?

HTML tags เป็น case insensitive ใช้ตัวพิมพ์ใหญ่หรือเล็กก็ได้ แต่นิยมใช้ตัวพิมพ์เล็ก · สิ่งที่เป็น case sensitive คือ character entities

11กฎการ nesting tag ที่ถูกต้องคือข้อใด?

"These regions can be nested, but not overlap." — เปิด tag1 แล้วเปิด tag2 ต้องปิด tag2 ก่อนปิด tag1 เสมอ

12tag ใดต่อไปนี้ไม่จำเป็นต้องมี closing tag?

<br> (line break) เป็นแค่การบอกตำแหน่งให้ขึ้นบรรทัดใหม่ ไม่ต้องใส่ closing tag

13<!DOCTYPE html> ต้องอยู่ตำแหน่งใดของเอกสาร?

"The HTML document declaration must be the very first thing in your HTML document, before the <html> tag." และ <html> ครอบทุก element ยกเว้น <!DOCTYPE>

14เมื่อ browser พบ HTML tag ที่ไม่รู้จัก (unknown tag) จะทำอย่างไร?

"Unknown tags are ignored." browser ยังทำงานได้โดยไม่บอก error และข้ามการแปลของ tag ที่ไม่ได้บัญญัติไว้ เพื่อให้สะดวกต่อการเพิ่ม tag ใหม่ๆ ในอนาคต

15attribute href ใช้กับ tag ใด?

<a> (Anchor) ระบุปลายทางของลิงก์ด้วย attribute href · <img> ใช้ src และ alt

16Relative path ต่างจาก Absolute path อย่างไร?

Relative path อ้างอิง resource ที่เข้าถึงได้จาก document ปัจจุบัน เช่น <a href="filename.html"> · URL แบบเต็มที่เข้าถึงผ่านอินเทอร์เน็ตคือ Absolute path เช่น http://www.google.com

17<ol> กับ <ul> ต่างกันอย่างไร?

<ol> = ordered list (ตัวเลขลำดับ) · <ul> = unordered list (bullet point) · ทั้งคู่ใช้ <li> สำหรับแต่ละรายการ

18attribute ใดของ <img> ใช้เพิ่มคำอธิบายรูปภาพเพื่อ accessibility?

alt เพิ่มรายละเอียดของรูปภาพสำหรับผู้ใช้ที่เข้าถึงรูปไม่ได้ หรือผู้พิการทางสายตาที่ใช้ screen reader · src ระบุ URL/path ของไฟล์รูป

19&lt; เป็น character entity ที่แสดงผลเป็นสัญลักษณ์ใด?

&lt; (หรือ &#60;) = less than (<) · &gt; = > · &amp; = & · &quot; = "

20attribute ใดใช้ขยายเซลล์ตารางให้ครอบคลุมหลายหลัก (column)?

colspan ขยายเซลล์ให้ครอบคลุมหลายหลัก (<td colspan="3"> กว้างไปทางขวา 3 หลัก) · rowspan ขยายให้ครอบคลุมหลายแถว

0 / 20 ข้อ

แบบฝึกหัดเขียนโค้ด

เขียน HTML จริงในช่องแก้ไข ดูผลลัพธ์ใน browser ทันที แล้วกด "ตรวจคำตอบ" ให้ระบบตรวจโครงสร้างให้อัตโนมัติ (Ctrl + Enter ก็ตรวจได้) · โค้ดและความคืบหน้าบันทึกไว้ใน browser นี้

แบบฝึกหัดเขียนโค้ดต้องเปิด JavaScript ใน browser