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

Type & Spacing Scales

เมื่อคุณ nudge element ใน Figma ค่า nudge เริ่มต้นคือ 8px นั่นไม่ใช่เรื่องบังเอิญ ตาราง 8px คือระบบ spacing ที่พบมากที่สุดในการออกแบบมืออาชีพ — และมีคู่เทียบในโค้ดโดยตรงที่ทำให้เลย์เอาต์ของคุณสอดคล้องกัน

Spacing scale คือชุดค่าคงที่ที่สร้างบน base unit หน่วยฐานที่พบมากที่สุดคือ 4px (โดย 8px เป็น “standard step”) นี่คือวิธีที่แมป:

ชื่อ Tokenค่าFigma equivalent
--space-14pxNudge × 0.5
--space-28px1 nudge
--space-312px1.5 nudges
--space-416px2 nudges
--space-624px3 nudges
--space-832px4 nudges
--space-1248px6 nudges
--space-1664px8 nudges

ทุกอย่างในเลย์เอาต์ของคุณ — padding, margin, gap ระหว่าง elements — ควรใช้หนึ่งในค่าเหล่านี้ ค่าที่ “นอก scale” (เช่น 13px หรือ 22px) มักเป็นข้อผิดพลาดในการออกแบบที่คุ้มค่าแก่การแก้ไข

Type scale คือชุดขนาดฟอนต์ที่สอดคล้องกัน สร้างบน ratio ที่กำหนด Ratio ที่พบบ่อยคือ 1.25 (Major Third) และ 1.5 (Perfect Fifth) โดยเริ่มจาก base 16px:

ชื่อ Tokenค่า (ratio 1.25)การใช้งาน
--text-xs12pxLabels, captions
--text-sm14pxBody รอง, metadata
--text-base16pxBody text
--text-lg20pxLead text, card headings
--text-xl24pxSection headings
--text-2xl32pxPage headings
--text-3xl40pxHero headlines

ใน Figma สิ่งเหล่านี้แมปกับ Text Styles ของคุณ ถ้า text styles ของคุณมีชื่อว่า body/sm, body/base, heading/lg ควรแปลโดยตรงเป็น --text-sm, --text-base, --text-lg

ส่วนด้านล่างใช้เฉพาะ spacing และ type sizes ที่ใช้ token เท่านั้น เปลี่ยน --text-base หรือ --space-4 ใน CSS และดู scale ที่ส่งผลตลอด

  • ตั้งขนาด font/spacing แบบสุ่มไม่เป็น scale ทำให้แต่ละหน้าดู “ไม่ใช่ระบบเดียวกัน”
  • ใช้ scale คนละชุดระหว่าง desktop กับ mobile โดยไม่มีเหตุผลรองรับ

Designer เห็น “ขนาดที่ดูสมส่วน” แต่ developer อยากได้ scale ที่จำกัด (เช่น type scale แบบ 1.25 ratio) เพื่อ map เป็น CSS variable ที่ reuse ได้ ไม่ต้องจำค่าที่ต่างกันทุกจุด

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

Type scale ของ Material Design (Display/Headline/Title/Body/Label) ให้ชุดขนาดจำกัดที่ Google ใช้ตรงกันทั้ง Android และ Web

ทำไมดีไซเนอร์จึงมักใช้ 8px เป็น base spacing unit?
Type scale กำหนดสิ่งใด?
CSS property ใดที่คุณจะใช้ spacing token สำหรับ?