ข้ามไปยังเนื้อหา
Guide Apr 7, 2026 · 5 min read

RGB ยังไม่พอ: สัญกรณ์สี HSL, CMYK และ OKLCH

ในบทความที่แล้ว คอมพิวเตอร์สร้างสีได้อย่างไร: เรื่องของ RGB, HEX และเลขฐานสอง เราเห็นแล้วว่าสีหนึ่งสีคือตัวเลขสามตัว — แดง เขียว น้ำเงิน ค่า 0–255 หน้าจอทำงานกับตัวเลขเหล่านั้นได้ดี แต่ทันทีที่มนุษย์เริ่มทำงานกับสี RGB ก็กลายเป็นสิ่งที่ใช้งานยากในทันที

RGB สะดวก แต่ไม่ตรงกับสัญชาตญาณ

“แดงสว่างขึ้นนิดหน่อย” จะทำแบบ RGB ได้อย่างไร? ต้องปรับทั้งสามช่องพร้อมกัน “ลด saturation แค่นิดเดียว” ดู RGB อย่างเดียวก็ไม่รู้ต้องลดช่องไหน “พิมพ์สีนี้ลงกระดาษให้เหมือนหน้าจอ” — RGB ทำไม่ได้เลย

SCENARIO 01
"สว่างขึ้นนิดหน่อย"

ด้วย RGB ต้องเพิ่มทั้ง R·G·B พร้อมกัน ถ้าสัดส่วนคลาดเคลื่อน เฉดสีก็เปลี่ยน

+30, +30, +30 ?
SCENARIO 02
"ลด saturation แค่นิดเดียว"

ดู RGB อย่างเดียวไม่รู้ต้องลดช่องไหน

R−40, G+10 … ?
SCENARIO 03
"พิมพ์ลงกระดาษให้เหมือนหน้าจอ"

RGB บนหน้าจอพิมพ์ออกมาเป็นหมึกไม่ได้ตรงกัน

→ ต้องใช้ CMYK

ระบบสีอื่นๆ ถูกสร้างขึ้นเพื่อแก้ปัญหาเหล่านี้

HSL — วิธีคิดแบบมนุษย์

HSL แบ่งสีออกเป็น เฉดสี · ความอิ่มตัว · ความสว่าง สามแกน hsl(14, 100%, 60%) คือสีเดียวกับ #FF5733 แต่ชัดเจนกว่าว่าแต่ละค่ามาจากไหน

H
Hue

เฉดสี คือ "ชื่อสี" เช่น แดง เขียว น้ำเงิน

0° → 360°
S
Saturation

ความอิ่มตัว. 0% = เทา, 100% = สีสด

0% → 100%
L
Lightness

ความสว่าง. 0% = ดำ, 100% = ขาว

0% → 100%

ถ้า RGB คือภาษาของคอมพิวเตอร์ — HSL คือภาษาของนักออกแบบ สามารถจัดการสีเดียวกันได้จากมุมมอง อยากเปลี่ยนอะไร

Hue — เฉดสีเป็นวงกลม 360°

เฉดสีวนครบรอบเหมือนเข็มนาฬิกา จาก 0° ถึง 360° โดย 0° และ 360° คือสีแดงเดียวกัน

แดง
30°ส้ม
60°เหลือง
120°เขียว
180°ไซแอน
240°น้ำเงิน
300°แมเจนตา

Saturation — ความอิ่มตัวคือความเข้มของสี

เฉดสีเดิม แต่ลด saturation ลง สีจะค่อยๆ กลายเป็นเทา

0% — เทา 50% — พาสเทล 100% — แดงสด

Lightness — ความสว่างจากดำถึงขาว

L 0% คือดำเสมอ, 100% คือขาวเสมอ และ 50% คือความสว่าง “ธรรมชาติ” ของสีนั้น

0% — ดำ 50% — แดงธรรมชาติ 100% — ขาว

ประโยชน์จริงของ HSL — สร้าง palette

คงเฉดสี (Hue) ไว้แล้วเปลี่ยนแค่ L ก็ได้ชุดสีที่กลมกลืนกันทันที ทำแบบเดียวกันด้วย RGB ต้องคำนวณทีละช่องทั้ง 9 ช่อง แต่ HSL แค่เปลี่ยน L จาก 12% → 92% เป็นขั้นๆ ก็พอ

PALETTE A — HUE 14° (TERRACOTTA)
L 12%
L 22%
L 32%
L 42%
L 52%
L 62%
L 72%
L 82%
L 92%
PALETTE B — HUE 220° (BLUE)
L 12%
L 22%
L 32%
L 42%
L 52%
L 62%
L 72%
L 82%
L 92%

ทั้งสอง palette สร้างได้ด้วยโค้ดแค่ไม่กี่บรรทัด

:root {
  --terra-100: hsl(14 60% 92%);
  --terra-200: hsl(14 60% 82%);
  --terra-300: hsl(14 60% 72%);
  /* ... เปลี่ยน L ทีละ 10 ก็จบ */
}

นี่คือจุดที่ HSL โดดเด่นที่สุดในการสร้าง design system

CMYK — ภาษาของหมึก

สีบนกระดาษต้องใช้ระบบต่างออกไปโดยสิ้นเชิง CMYK คือสัดส่วนหมึกสี่สีที่โรงพิมพ์ใช้

Cyan
Cyan — ฟ้าเขียว
Magenta
Magenta — แดงม่วง
Yellow
Yellow — เหลือง
Key (black)
Key — ดำ

ทำไมดำถึงใช้ “K” ไม่ใช่ “B”? เพราะ B ซ้ำกับ Blue นั่นเอง และมาจากคำว่า “Key plate” ในศัพท์การพิมพ์ หมายถึงแม่พิมพ์อ้างอิงสำหรับจัดวางหมึกอื่น

แสงยิ่งรวมกันยิ่งสว่าง หมึกยิ่งผสมกันยิ่งเข้ม

ความต่างใหญ่ที่สุดระหว่าง RGB กับ CMYK คือ วิธีการผสม

RGB
= แสง (หน้าจอ)
เพิ่มขึ้นสว่างขึ้น
รวมทั้งหมดขาว
ไม่มีเลยดำ
ยิ่งรวมยิ่งสว่าง — additive mixing
CMYK
= หมึก (กระดาษ)
เพิ่มขึ้นเข้มขึ้น
รวมทั้งหมดดำ (ทฤษฎี)
ไม่มีเลยขาว (สีกระดาษ)
ยิ่งรวมยิ่งเข้ม — subtractive mixing

หมึกแดงดูแดงเพราะมัน ดูดซับ แสงสีอื่นแล้วสะท้อนแค่แดงกลับมา หมึกทำงานโดยดูดซับแสง จึงยิ่งผสมมากยิ่งเข้มขึ้น ในทางทฤษฎีผสม CMY ครบสามสีควรได้ดำ แต่จริงๆ แล้วได้สีน้ำตาลขุ่น จึงต้องมีหมึกดำ (K) แยกต่างหาก

CMYK ใช้ที่ไหน?

ถ้าทำงานออกแบบหน้าจอแทบไม่ต้องสัมผัส CMYK เลย — ใช้เฉพาะงานพิมพ์กระดาษ

  • ส่งไฟล์ให้โรงพิมพ์ — นามบัตร โปสเตอร์ หนังสือ แพ็กเกจ โรงพิมพ์รับ RGB แล้วแปลงเป็น CMYK เอง
  • งานพิมพ์ใน Photoshop / Illustrator — ตั้งโหมดสีเป็น CMYK ตั้งแต่ต้น
  • Brand guide — ระบุทั้ง HEX สำหรับหน้าจอและ CMYK สำหรับพิมพ์ เพื่อให้สีแบรนด์ดูใกล้เคียงกันในทั้งสองสื่อ

ทำไมสีหน้าจอกับสีพิมพ์ถึงต่างกัน — Gamut

ช่วงสีที่หน้าจอแสดงได้ (RGB gamut) กับช่วงสีที่หมึกแสดงได้ (CMYK gamut) ไม่เท่ากัน สีชมพูเรืองแสงบนหน้าจอพิมพ์ออกมาไม่ได้สีนั้น — เพราะหมึกทำสีนั้นไม่ได้

นักออกแบบงานพิมพ์จึงเลือกสีจาก ช่วงที่ CMYK รองรับ ตั้งแต่แรก ออกแบบใน RGB แล้วนำไปพิมพ์ตรงๆ มักทำให้สีดูจืดลง

การเขียนค่า CMYK

ระบุว่าจะใช้หมึกแต่ละสีกี่เปอร์เซ็นต์ 0% = ไม่ใช้เลย, 100% = เต็มที่

แดง
C 0% M 100% Y 100% K 0%
เขียว
C 100% M 0% Y 100% K 0%
น้ำเงิน
C 100% M 80% Y 0% K 0%
ดำ (K เท่านั้น)
C 0% M 0% Y 0% K 100%
ดำเข้ม (rich black)
C 60% M 50% Y 50% K 100%

ดำด้วย K 100% เพียงอย่างเดียวจะได้ดำขุ่นใกล้เคียงเทา โรงพิมพ์จึงปูหมึก CMY ร่วมด้วยเพื่อให้ได้ดำที่ลึกขึ้น

OKLCH — พิกัดของมนุษย์

โมเดลสีที่เพิ่งเข้ามาจริงจังในยุค 2020s คำสำคัญมีคำเดียว — “ธรรมชาติต่อสายตามนุษย์”

สามพิกัดดูชื่อคล้าย HSL

  • L — Lightness (ความสว่าง, 0–1)
  • C — Chroma (ความอิ่มตัว, 0–ประมาณ 0.4)
  • H — Hue (เฉดสี, 0–360°)

แต่ HSL มีปัญหาซ่อนอยู่ L = 50% เท่ากัน แต่แต่ละสีให้ความรู้สึกสว่างต่างกันโดยสิ้นเชิง ลองเปรียบเทียบดู

HSL — L = 50% คงที่

สีเหลืองจ้าจนแสบตา ขณะที่สีน้ำเงินดูมืดเกือบเหมือนดำ ค่า L เท่ากัน แต่สายตามนุษย์ไม่รู้สึกอย่างนั้น

OKLCH — L = 0.65 คงที่

สีต่างกัน แต่ดูสว่างใกล้เคียงกัน เพราะค่า L ออกแบบมาให้ตรงกับ "ความสว่างที่มนุษย์รับรู้"

สรุปในหนึ่งบรรทัด — RGB และ HSL คือพิกัดของเครื่องจักร OKLCH คือพิกัดของมนุษย์

บทบาทของ L · C · H แต่ละตัว

ลองเปลี่ยนพิกัดเดียวโดยคงสีเดิมไว้ แล้วดูว่าเกิดอะไรขึ้น

VARY L
เปลี่ยนแค่ความสว่าง
VARY C
เปลี่ยนแค่ความอิ่มตัว
VARY H
เปลี่ยนแค่เฉดสี

ใช้ที่ไหนได้บ้าง

  • palette ที่สว่างสม่ำเสมอ — เมื่ออยากให้สีหมวดหมู่ 8 สีมีความสว่างเท่ากันทุกสี
  • สลับ dark/light mode อัตโนมัติ — invert ค่า L ก็ได้ dark theme ที่เป็นธรรมชาติ
  • accessibility — คาดเดาความต่างความสว่างระหว่างข้อความกับพื้นหลังได้แม่นยำ
  • gradient — ไหลลื่นโดยไม่มีแถบเทาขัดกลาง

นำเข้ามาใน CSS Color Level 4 อย่างเป็นทางการแล้ว และใช้ได้ในบราวเซอร์รุ่นใหม่ทันที

.btn { background: oklch(67% 0.18 30); }       /* ส้ม */
.btn:hover { background: oklch(60% 0.18 30); } /* ลด L แค่ 7 → เข้มขึ้นพอดีเท่านั้น */

จะใช้อะไรเมื่อไหร่?

ระบบสี
ใช้เมื่อไหร่
HEX / RGB
งานดิจิทัลทั่วไป, CSS, โค้ด
HSL
สร้าง palette ใน design system, ปรับโทนสี
HSB / HSV
ใน color picker ของ Figma·Photoshop
OKLCH
เว็บดีไซน์สมัยใหม่ที่ต้องการโทนสม่ำเสมอ
CMYK
ส่งไฟล์ให้โรงพิมพ์

สำหรับงานดิจิทัลส่วนใหญ่ RGB/HEX เพียงพอแล้ว นึกถึง HSL เมื่อต้องสร้าง palette และ OKLCH มีประโยชน์มากเมื่อออกแบบ dark/light mode

จัดการสีด้วย fns

เมื่อรู้แล้วว่าสีคือตัวเลข ขั้นต่อไปคือเก็บสีที่ใช้บ่อยไว้แค่ปลายนิ้ว fns รวมการดึง บันทึก และเรียกใช้สีไว้ที่คีย์เดียว

Eyedropper หยิบสีจากที่ไหนก็ได้ — +Shift+K

Eyedropper คือเครื่องมือดึงสีจากพิกเซลใดก็ได้บนหน้าจอ เหมือนเอา color picker ที่ใช้ได้แค่ใน Figma/Photoshop ออกมาใช้ได้ทั่วทั้งระบบ

กด +Shift+K แล้ว Eyedropper ของ fns จะปรากฏทุกที่บนหน้าจอ ไม่ว่าจะเป็นพิกเซลในไฟล์ดีไซน์ พื้นที่ในภาพถ่าย หรือสีพื้นหลังของแอปอื่น — เลื่อนเมาส์ไปคลิก ก็จับสีนั้นได้ทันที

  • คลิกแต่ละครั้งบันทึกลง clipboard อัตโนมัติ ไม่ต้องกด “copy” แยก
  • เลือกได้ว่าจะให้ clipboard รับสีในรูปแบบ RGB / HEX / HSL / CMYK / OKLCH
  • แสดงตัวอย่างสีและ system color ที่ใกล้เคียงด้วย

Eyedropper → บันทึก clipboard อัตโนมัติ → ดึงจาก clipboard picker — ไม่มีขั้นตอนสะดุด ไม่ต้องเปิดหน้าต่างแยกเหมือน Digital Color Meter ของ Mac และไม่ต้องกดคีย์ลัด copy ซ้ำๆ

clipboard จดจำสีโดยอัตโนมัติ

ประวัติ clipboard ของ fns รู้จักอัตโนมัติว่าข้อความที่คัดลอกเป็นรหัสสีหรือเปล่า — ไม่ว่าจะเป็นรูปแบบใดก็ตาม

#FF5733 HEX มาตรฐาน
#F53 ย่อ 3 หลัก — รู้จักเป็นสีเดียวกัน
rgb(255, 87, 51) รู้จัก rgba(...) ที่มีค่า alpha ด้วย
hsl(14, 100%, 60%) รู้จัก hsla(...) ที่มีค่า alpha ด้วย
oklch(0.67 0.18 30) รูปแบบ CSS สมัยใหม่

เมื่อเรียกสีจากประวัติ clipboard กลับมา แค่ดูข้อความก็จำไม่ออกว่าสีอะไร fns แสดง color chip เล็กๆ ข้างแต่ละรายการให้เห็นในทันที

กรองแสดงแค่สี

กดปุ่มเดียว กรองเฉพาะรหัสสี จากประวัติ clipboard ได้ ระหว่างทำงานออกแบบ ถ้าอยากดูแค่สีที่เพิ่งใช้ ก็ไม่ต้องคุ้ยระหว่างข้อความ URL และโค้ดให้เมื่อย

  • ใช้ keyword filter เช่น color: ใน picker เดิม → แสดงเฉพาะรายการสี
  • ค้นหาด้วยชื่อสี — ค้น “blue” หรือ “red” ได้แค่สีในกลุ่มนั้น
  • เรียงรายการสีที่ใกล้เคียงกันไว้ด้วยกันด้วยภาพ

แปลงสีเดิมเป็นรูปแบบอื่น

เรียกสีกลับมาในรูปแบบอื่น ได้ ถ้าคัดลอก #FF5733 จาก Figma แล้วอยากวางใน CSS เป็น rgb(...) แค่เลือกรายการนั้นใน fns clipboard picker แล้วกดคีย์ลัดครั้งเดียวก็แปลงอัตโนมัติ

รูปแบบที่คัดลอก
#FF5733
แปลงเป็น
rgb(255, 87, 51)
รูปแบบที่คัดลอก
rgb(255, 87, 51)
แปลงเป็น
hsl(14, 100%, 60%)
รูปแบบที่คัดลอก
hsl(14, 100%, 60%)
แปลงเป็น
oklch(0.67 0.18 30)

ไม่ต้องเปิดเว็บแปลงสีทุกครั้งที่สลับระหว่าง Figma (HSB) กับ CSS (HSL/HEX/OKLCH)

Text expansion และการมัดรวม

ลงทะเบียนสีแบรนด์ที่ใช้บ่อยเป็นคีย์ย่อข้อความ

;brand
#FF5733
;ink
#1A1714
;cream
#F1ECE0
;accent
#E8C547
;ok
#29A85A

คีย์ย่อเดิมทำงานได้ทุกที่ — ช่องกรอกสีใน CSS, Figma, ข้อความ Slack, code editor ไม่ต้องเปิด brand guide มาค้นและคัดลอกสีทุกครั้งอีกต่อไป

เวลาที่เสียไปกับการเปิดเว็บแปลงสีและย้ายรหัสสีระหว่างรูปแบบ ลองให้ fns จัดการแทนดู

อยากรู้ว่าตัวเลขเหล่านี้มาจากไหน — พื้นฐานของสามช่อง RGB, เลขฐานสอง และสัญกรณ์ HEX? เริ่มต้นได้ที่ คอมพิวเตอร์สร้างสีได้อย่างไร: เรื่องของ RGB, HEX และเลขฐานสอง