tutorial 28 กุมภาพันธ์ 2567 โดย ทีมงาน ฟอนต์ไทย

Responsive Typography — วิธีทำให้ฟอนต์ไทยแสดงผลดีบนทุกหน้าจอ

เรียนรู้เทคนิค Responsive Typography สำหรับภาษาไทย ตั้งแต่ fluid font-size, viewport units ไปจนถึง CSS clamp()

Responsive CSS Typography Web Design

ในยุคที่ผู้ใช้เข้าถึงเว็บไซต์จากอุปกรณ์หลากหลาย ตั้งแต่มือถือจอเล็กไปจนถึงจอมอนิเตอร์ขนาดใหญ่ การทำให้ตัวอักษรแสดงผลได้ดีบนทุกขนาดหน้าจอจึงสำคัญมาก

ปัญหาของ Fixed Font Size

การกำหนดขนาดฟอนต์เป็นค่าคงที่ (เช่น font-size: 16px) ทำให้ตัวอักษรดูเล็กเกินไปบนจอใหญ่ หรือใหญ่เกินไปบนจอเล็ก โดยเฉพาะภาษาไทยที่มีสระบนล่างทำให้ต้องการพื้นที่มากกว่าภาษาอังกฤษ

วิธีที่ 1: Media Queries

วิธีพื้นฐานที่สุดคือใช้ Media Queries กำหนดขนาดฟอนต์ต่างกันตาม breakpoint

/* Mobile */
body { font-size: 16px; }

/* Tablet */
@media (min-width: 768px) {
  body { font-size: 18px; }
}

/* Desktop */
@media (min-width: 1024px) {
  body { font-size: 20px; }
}

ข้อดีคือควบคุมได้ชัดเจน แต่ข้อเสียคือขนาดฟอนต์เปลี่ยนแบบกระโดด ไม่ smooth

วิธีที่ 2: Viewport Units (vw)

ใช้หน่วย vw (viewport width) ทำให้ขนาดฟอนต์ปรับตามความกว้างหน้าจอแบบ smooth

h1 {
  font-size: 5vw; /* 5% ของความกว้างหน้าจอ */
}

p {
  font-size: 2vw;
}

ข้อเสียคือบนจอเล็กมากอาจเล็กเกินไป และบนจอใหญ่มากอาจใหญ่เกินไป

วิธีที่ 3: CSS clamp() — วิธีที่แนะนำ

clamp() รวมข้อดีของทั้งสองวิธี โดยกำหนดค่าต่ำสุด, ค่า preferred, และค่าสูงสุด

h1 {
  /* ต่ำสุด 24px, preferred 5vw, สูงสุด 48px */
  font-size: clamp(24px, 5vw, 48px);
}

p {
  /* ต่ำสุด 16px, preferred 2vw, สูงสุด 20px */
  font-size: clamp(16px, 2vw, 20px);
}

Line Height สำหรับภาษาไทย

ภาษาไทยมีสระบนล่าง ควรใช้ line-height อย่างน้อย 1.6-1.8 เพื่อให้อ่านง่าย

body {
  font-family: 'Sarabun', sans-serif;
  font-size: clamp(16px, 2vw, 20px);
  line-height: 1.7;
}

ตัวอย่าง Typography Scale ที่แนะนำ

:root {
  --font-size-xs: clamp(12px, 1.5vw, 14px);
  --font-size-sm: clamp(14px, 1.8vw, 16px);
  --font-size-base: clamp(16px, 2vw, 18px);
  --font-size-lg: clamp(18px, 2.5vw, 22px);
  --font-size-xl: clamp(24px, 3vw, 32px);
  --font-size-2xl: clamp(32px, 4vw, 48px);
  --font-size-3xl: clamp(40px, 5vw, 64px);
}

h1 { font-size: var(--font-size-3xl); }
h2 { font-size: var(--font-size-2xl); }
h3 { font-size: var(--font-size-xl); }
p { font-size: var(--font-size-base); }
.caption { font-size: var(--font-size-sm); }

สรุป

สำหรับ Responsive Typography ภาษาไทย แนะนำใช้ CSS clamp() เป็นหลัก เพราะควบคุมขอบเขตได้ดีและ smooth ไม่ลืมเรื่อง line-height ที่ต้องมากกว่าภาษาอังกฤษเล็กน้อย

พร้อมลองใช้ฟอนต์แล้วหรือยัง?

ทดลองพรีวิวและดาวน์โหลดฟอนต์ไทยฟรีได้ทันที

ดูฟอนต์ทั้งหมด อ่านบทความอื่น