HSL คือวิธีที่เป็นมิตรในการเลือกสี ขณะที่ RGB คือสิ่งที่หน้าจอ, canvas APIs และโค้ดรูปภาพใช้จริง ตัวแปลงนี้จะแปลงค่า hue, saturation และ lightness เป็นช่องสัญญาณ 0–255 ที่แม่นยำ
วิธีการแปลงจาก HSL เป็น RGB
- แปลง S และ L เป็นเศษส่วนแล้วคำนวณ chroma C = (1 − |2L − 1|) × S
- หารค่า hue ด้วย 60 เพื่อหาช่วงบนวงสีแล้วคำนวณค่ากลาง X = C × (1 − |(H/60 mod 2) − 1|)
- กำหนดค่า C, X และ 0 ลงในช่อง R, G และ B ตามช่วงที่ได้
- เพิ่มออฟเซ็ตความสว่าง L − C/2 ให้กับทั้งสามช่องแล้วคูณด้วย 255
ตัวอย่างที่ทำงานได้
ผลลัพธ์แม่นยำจนถึงขั้นตอนการปัดให้เป็นจำนวนเต็มของแต่ละช่อง ค่าความชันหรือความอิ่มตัวเป็นเศษส่วนก็รองรับได้และจะปัดไปยัง RGB triple ที่ใกล้ที่สุด
HSL และ RGB อธิบาย
HSL คืออะไร?
HSL แยกสีเป็น hue (0–360° บนวงล้อสี), saturation (ความสดของสี, 0–100%) และ lightness (ความสว่าง, 0–100%) เพราะแต่ละส่วนตรงกับวิธีที่คนอธิบายสี HSL จึงเป็นฟอร์แมตที่ง่ายที่สุดสำหรับสร้างไทนท์ เงา และพาเลตต์ที่สม่ำเสมอ — ทั้งแบบทำมือหรือในโค้ด
- ไวยากรณ์:
- hsl(H, S%, L%)
- ช่วงค่า:
- 0–360°, 0–100%, 0–100%
- เหมาะสำหรับ:
- พาเลตต์ ไทนท์และเงา ธีม
RGB คืออะไร?
RGB อธิบายสีเป็นสามช่องของแสง — แดง เขียว น้ำเงิน — แต่ละช่องมีค่า 0 ถึง 255 มันสะท้อนการทำงานจริงของหน้าจอ: ทั้งสามช่องเป็น 255 ให้สีขาว ทั้งสามช่องเป็น 0 ให้สีดำ RGB เหมาะเมื่อต้องคำนวณกับสี เช่น การแอนิเมตช่องเดียว ผสมสีในโค้ด หรือเพิ่มความโปร่งใสด้วย rgba()
- ไวยากรณ์:
- rgb(R, G, B)
- ช่วงค่า:
- 0–255 ต่อช่อง
- เหมาะสำหรับ:
- โค้ด แคนวาส ความโปร่งใสด้วย rgba()
ตารางอ้างอิงจาก HSL เป็น RGB
สี CSS ที่ใช้บ่อยที่สุด แปลงจาก HSL เป็น RGB
| สี | HSL | RGB |
|---|---|---|
| black | hsl(0, 0%, 0%) | rgb(0, 0, 0) |
| white | hsl(0, 0%, 100%) | rgb(255, 255, 255) |
| red | hsl(0, 100%, 50%) | rgb(255, 0, 0) |
| lime | hsl(120, 100%, 50%) | rgb(0, 255, 0) |
| blue | hsl(240, 100%, 50%) | rgb(0, 0, 255) |
| yellow | hsl(60, 100%, 50%) | rgb(255, 255, 0) |
| orange | hsl(39, 100%, 50%) | rgb(255, 166, 0) |
| teal | hsl(180, 100%, 25%) | rgb(0, 127, 128) |
| purple | hsl(300, 100%, 25%) | rgb(128, 0, 127) |
| gray | hsl(0, 0%, 50%) | rgb(128, 128, 128) |