RGBA to HEX / HEX to RGBA | Token màu có alpha cho design system

(Cập nhật: 19 tháng 7, 2026 ) rgba to hex hex to rgba HEX8 token màu design system CSS alpha
Kết luận

rgba to hex / hex to rgba với alpha không chỉ là đổi hệ cơ số — đó là chuẩn hóa token màu giữa Figma, CSS và Tailwind. Lưu màu solid bằng #RRGGBB; biến thể trong suốt bằng #RRGGBBAA hoặc rgba(). Alpha 0–1 × 255 rồi làm tròn (0.5 → 80). Dùng công cụ RGBA ↔ HEX để tránh lệch 1 đơn vị giữa designer và dev.

Khi team outsourcing hoặc freelancer Việt Nam nhận file Figma, màu hay xuất dạng #3B82F6CC, trong khi ticket Jira/Notion viết rgba(59, 130, 246, 0.8), và PR Tailwind lại dùng bg-blue-500/80. Ba cách viết cùng một ý — nhưng làm tròn alpha khác nhau thì overlay modal lệch, hover list “nhạt hơn mock”, QA báo bug màu.

Bài này tập trung token màu có alpha: công thức rgba to hex / hex to rgba, bảng giá trị hay dùng, chỗ dễ sai, và checklist đưa vào design system — không dừng ở định nghĩa CSS.

Ai cần bài này

  • Frontend / design system keeper đồng bộ Figma styles → CSS variables
  • Freelancer bàn giao landing/SME: brand color + overlay modal
  • Dev Nest/Next/React Native cần cùng palette cho web và app
  • QA so sánh mock với production khi “màu gần đúng nhưng không khớp”

Ba định dạng bạn sẽ gặp mỗi ngày

Định dạngVí dụAlpha?
rgba / modern rgbrgba(59, 130, 246, 0.8) hoặc rgb(59 130 246 / 80%)Có (0–1 hoặc %)
HEX 6 chữ số#3B82F6Không (mặc định opaque)
HEX 8 chữ số (HEX8)#3B82F6CCCó (2 chữ số cuối)

Tìm kiếm tiếng Anh thường là rgba to hex, hex to rgba, hex8 alpha. Trong design system, tên token nên ổn định (color.overlay.scrim, color.brand.primary/10) — giá trị có thể đổi format theo môi trường.

Chuyển ngay HEX ↔ RGBA (có alpha)

Công cụ chạy trên trình duyệt — dán mã từ Figma/CSS, không upload palette lên server lạ. Chi tiết đầy đủ tại RGBA to HEX.


Công thức rgba to hex (và ngược lại)

RGBA → HEX / HEX8

  1. Mỗi kênh R, G, B (0–255) → hex 2 chữ số, zero-pad (150F)
  2. Nối # + RR + GG + BB
  3. Nếu có alpha A (0–1): round(A × 255) → hex 2 chữ số → #RRGGBBAA
rgba(255, 0, 0, 0.5)
R=FF  G=00  B=00
A = round(0.5 × 255) = round(127.5) = 128 → 80
→ #FF000080

HEX / HEX8 → RGBA

  1. #RGB rút gọn → nhân đôi từng chữ (#F03#FF0033)
  2. #RRGGBBrgba(R, G, B, 1)
  3. #RRGGBBAA → alpha = parseInt(AA, 16) / 255
#3B82F6CC
R=59  G=130  B=246
A = 0xCC / 255 ≈ 0.8
→ rgba(59, 130, 246, 0.8)

Bảng alpha hay gặp (bookmark)

Alpha (0–1)≈ %HEX AADùng token
0.044%0AHover rất nhẹ, divider
0.088%14Row hover light theme
0.110%1ASelected tint, shadow mềm
0.1515%26Dropdown elevation
0.2525%40Focus ring soft
0.440%66Scrim modal còn thấy nền
0.550%80Modal / lightbox chuẩn
0.880%CCGlass panel trắng/màu brand

Công thức đúng vẫn có thể lệch 1 giữa Figma “50%” và browser nếu một bên round, một bên truncate. Khi merge PR token, một công cụ chuẩn cho cả team — RGBA ↔ HEX của Kawa đủ cho việc này.


Token design system: lưu gì, ở đâu

Nơi xuất hiện màu có alpha
Nguồn Format thường gặp Nên làm gì
Figma / FigJam HEX8 hoặc % opacity trên fill Export bảng token: tên + HEX8 + rgba đã round
CSS variables --color-scrim: rgba(...) hoặc #00000080 Chọn 1 convention cho cả repo; document trong README theme
Tailwind bg-black/50, text-primary/80 Slash cho utility; token gốc vẫn cần HEX/rgba cho JS/email
JSON theme / Style Dictionary Thường HEX hoặc object {r,g,b,a} Build pipeline sinh cả HEX8 và rgba nếu cần đa nền tảng

Quy ước thực tế (đủ dùng cho SME / product)

  1. Solid brand / semantic → HEX 6: --color-primary: #3B82F6
  2. Overlay / scrim / tint → HEX8 hoặc rgba tường minh: --color-scrim: #00000080
  3. Tint từ brand (selected row) → rgba từ cùng RGB primary + alpha cố định trong bảng (0.08 / 0.1 / 0.16)
  4. Không nhét opacity “ảo” vào component bằng opacity: 0.5 trên cả khối có chữ — làm mờ cả text (fail đọc). Tách màu nền có alpha.
:root {
  --color-primary: #3b82f6;
  --color-primary-soft: rgba(59, 130, 246, 0.1); /* ≈ #3B82F61A */
  --color-scrim: #00000080; /* rgba(0,0,0,0.5) */
}

.row-selected {
  background: var(--color-primary-soft);
}

.modal-backdrop {
  background: var(--color-scrim);
}

Tailwind v3/v4: bg-primary/10 tiện — nhưng khi viết email HTML, canvas, hoặc React Native, bạn vẫn cần số tuyệt đối. Đó là lúc hex to rgba / rgba to hex thành bước bắt buộc trong pipeline, không phải “tiện thì dùng”.


Case study: lệch màu giữa Figma và production

Case 1 — Modal scrim “đậm hơn mock”

Designer ghi Black 50%. Dev viết rgba(0,0,0,0.5). QA đo trên screenshot thấy gần khớp. Sau đó ai đó “optimize” thành #0000007F (127) thay vì #00000080 (128) — lệch nhỏ nhưng trên banner sáng dễ thấy. Fix: khóa token --color-scrim: #00000080 và cấm sửa tay trong component.

Case 2 — Brand tint selected row

Primary #2563EB. Figma dùng fill 10%. Dev copy #2563EB1A từ plugin A; plugin B xuất rgba(37, 99, 235, 0.1) — cùng ý. Nhưng một PR khác dùng opacity-10 trên cả row có icon + text → text cũng mờ. Fix: chỉ background dùng token soft; text giữ solid contrast AA.

Case 3 — Handoff freelance → client WordPress

Client dán HEX8 vào Customizer không hỗ trợ 8 chữ số (theme cũ). Cần hex to rgba trước khi paste. Checklist bàn giao: “mọi màu có alpha kèm bản rgba()”.


Lỗi thường gặp (checklist trước merge)

  • Quên alpha khi round-trip: #3B82F6rgba(59,130,246,1) — mất CC nếu từng là HEX8
  • Nhầm thứ tự: một số tool cũ ghi #AARRGGBB (Android) vs CSS #RRGGBBAA — đọc nhầm sẽ đảo màu
  • Short hex + alpha: #F0380 không hợp lệ; short chỉ #RGB / #RGBA (4 chữ) trong CSS hiện đại — nên normalize về 6/8
  • Tailwind /50 trên màu đã có alpha sẵn trong CSS variable → alpha nhân đôi, UI quá trong
  • So contrast WCAG trên màu có alpha mà lấy HEX solid làm nền — phải composite lên nền thật rồi mới đo

Quy trình đề xuất cho team VN (agency / product)

  1. Trong Figma: đặt tên token (scrim/50, primary/soft) — không chỉ “Rectangle blue”
  2. Export hoặc chép HEX8 → dán công cụ chuyển → lấy rgba chuẩn
  3. Ghi bảng (Notion/Spreadsheet): token | HEX8 | rgba | usage
  4. Commit CSS variables / theme JSON cùng PR với component đầu tiên dùng token
  5. Visual QA: modal, hover list, focus ring trên nền sáng và nền tối

Không cần wiki dài — một bảng token + một tool chung đã cắt phần lớn “màu gần đúng”.


Câu hỏi nhanh trước khi chọn format

Câu hỏiNếu “có” → ưu tiên
Theme hỗ trợ HEX8?HEX8 gọn trong CSS
Cần đọc alpha dễ trong code review?rgba() hoặc rgb(... / %)
Chủ yếu Tailwind utility?Slash opacity + token solid
Đa nền tảng (web + app + email)?Style Dictionary / JSON sinh nhiều format

Liên kết liên quan