ข้ามไปยังเนื้อหา

Text & Headings

ทุกดีไซน์มี type scale — ชุดของขนาดข้อความที่บ่งบอกถึงความสำคัญ หัวข้อใหญ่ตัวหนา หัวข้อรองที่เล็กลงมา และ body copy อยู่ด้านล่าง HTML ก็มีแนวคิดแบบเดียวกันเป๊ะ ติดตั้งมาให้ในตัวเลย

Heading element<h1> ไปจนถึง <h6> — ช่วยให้คุณบอก browser (รวมถึงเทคโนโลยีสิ่งอำนวยความสะดวกและ search engine) ว่าลำดับความสำคัญของข้อความเป็นอย่างไร ลองนึกว่าเป็น outline ของเอกสาร ไม่ใช่แค่ scale เชิงภาพ

<h1> คือ heading ที่สำคัญที่สุดในหน้าเว็บ — เป็นชื่อหลักของหน้า ส่วน <h2> คือ heading ของ section ใหญ่ และ <h3> คือ section ย่อย ไล่ลงไปเรื่อย ๆ จนถึง <h6> หน้าเว็บส่วนใหญ่ในทางปฏิบัติจะใช้แค่ <h1> ถึง <h3> เท่านั้น

heading element มีสไตล์เริ่มต้นจาก browser ติดมาด้วย (ใหญ่กว่า = สำคัญกว่า) แต่สไตล์เหล่านั้นจะถูก CSS override อยู่ดี สิ่งที่สำคัญจริง ๆ คือ ความหมายเชิง semantic — สัญญาณบอกลำดับชั้น

<p> คือย่อหน้า browser จะเพิ่ม margin เล็กน้อยด้านบนและด้านล่างของแต่ละย่อหน้าโดยอัตโนมัติ ถ้าต้องการเริ่มย่อหน้าใหม่ ให้เปิด <p> element ใหม่ — อย่าใช้ tag <br> เพียงเพื่อเพิ่มช่องว่างระหว่างบรรทัด (นั่นเหมือนการใช้ text layer เปล่าใน Figma เพื่อสร้างระยะห่าง แทนที่จะใช้ padding ของ auto-layout)

มีสอง element ที่ช่วยให้คุณเน้นคำ ภายใน ย่อหน้าได้ โดยไม่ต้องขึ้นบล็อกใหม่:

  • <strong>ตัวหนา หมายถึงเนื้อหาที่สำคัญหรือวิกฤต
  • <em>ตัวเอียง หมายถึงการเน้นย้ำ หรือการเน้นเสียงเล็กน้อยในการอ่าน

สองตัวนี้เป็น inline element คือจะอยู่ภายในกระแสของข้อความ แทนที่จะขึ้นบรรทัดใหม่

ลองเพิ่ม <h4> ใต้ <h3> ดู แล้วลองห่อคำสักคำด้วย <strong> หรือ <em> สังเกตว่าทั้งสองอันไม่ทำให้ขึ้นบรรทัดใหม่ — ข้อความยังคงอยู่ในประโยคเดิม

  • ข้าม heading level (h1 ไป h3 เลย) เพียงเพราะต้องการขนาดที่เล็กลง
  • มี <h1> มากกว่าหนึ่งอันในหน้าเดียว
  • ใช้ bold text แทน heading จริง

Designer เห็น “ขนาด font” เท่านั้น แต่ developer เห็นว่า heading level คือ outline ของเพจที่ screen reader ใช้ navigate (เหมือน table of contents)

💡 ตัวอย่างจากของจริง

บทความบน Dev.to และ Medium ใช้ heading hierarchy ที่ถูกต้อง ทำให้ auto-generate table of contents ได้จาก HTML ตรง ๆ โดยไม่ต้องทำมือ

heading element ใดบ่งบอกถึงหัวข้อที่สำคัญที่สุดในหน้าเว็บ?
element ที่ถูกต้องสำหรับบล็อกของ body text (ย่อหน้า) คือข้อใด?
element ใดทำให้ข้อความเป็นตัวหนา และบ่งบอกด้วยว่าสำคัญ?
ทำไมจึงควรหลีกเลี่ยงการข้ามระดับ heading (เช่น กระโดดจาก h1 ไป h3 โดยตรง)?