Menu

Màu chữ trong HTML: đổi màu chữ bằng CSS

Thẻ <font color> đã lỗi thời; màu chữ trong HTML được đặt bằng thuộc tính color của CSS. Tìm hiểu cách tô màu cả trang, một từ, một liên kết hay một tiêu đề, bằng tên màu, mã hex và rgb, và cách giữ cho chữ dễ đọc.

Trang này có trình soạn thảo chạy trực tiếp. Sửa, chạy và xem đầu ra ngay lập tức.

Cách đổi màu chữ trong HTML

Dùng thuộc tính color của CSS. Thuộc tính này đặt màu cho chữ của một phần tử, và mọi phần tử bên trong đều kế thừa màu đó, trừ khi chúng tự đặt màu riêng.

Thuộc tính tên là color, không phải font-color hay text-color. Những cái tên đó không tồn tại trong CSS và bị bỏ qua mà không báo lỗi.

Vì sao không dùng thẻ font

Các hướng dẫn cũ hay dùng <font color="red">. Thẻ này đã bị loại khỏi HTML từ nhiều năm trước: validator đánh dấu nó là lỗi, và nó trộn phần định dạng vào mã HTML, nên muốn đổi một màu là phải sửa tay từng thẻ. Trình duyệt vẫn hiển thị nó để tương thích ngược, và đó là lý do duy nhất khiến nó trông như vẫn chạy được.

<!-- obsolete -->
<font color="red">Warning</font>

<!-- use this -->
<span style="color: red;">Warning</span>

<!-- or better, a class you can change in one place -->
<span class="warning">Warning</span>

Các cách viết màu

color nhận mọi định dạng màu của CSS. Bốn định dạng phổ biến nhất:

Định dạngVí dụGhi chú
Tên màucolor: tomato;148 tên màu, tiện để thử nhanh
Hexcolor: #2563eb;Phổ biến nhất trong các file thiết kế
rgb()color: rgb(37 99 235);Đỏ, xanh lá và xanh dương, từ 0 đến 255
hsl()color: hsl(221 83% 53%);Sắc độ, độ bão hòa, độ sáng: dễ làm màu sáng hơn hay tối hơn

Hex, rgb() và hsl() có thể thêm kênh alpha để chữ bán trong suốt, ví dụ #2563eb80 hoặc rgb(37 99 235 / 50%). Trang màu CSS giải thích mọi định dạng.

Tô màu cả trang, một tiêu đề hay một khu vực

Đặt màu một lần trên body và để cơ chế kế thừa lo phần còn lại, rồi ghi đè ở chỗ cần:

Một màu gần đen dịu như #111827 hay #374151 trên nền trắng dễ nhìn hơn màu #000000 thuần mà vẫn được cảm nhận là màu đen.

Màu liên kết

Liên kết là ngoại lệ của cơ chế kế thừa: trình duyệt cho chúng màu xanh riêng (và màu tím khi đã truy cập), nên màu đặt trên phần tử cha không chạm tới chúng. Hãy đặt màu trên chính liên kết, hoặc bảo liên kết kế thừa màu:

:hover, :visited và :focus-visible cho phép bạn đổi màu theo từng trạng thái; trang hover giải thích chúng. Khi liên kết cùng màu với chữ xung quanh, hãy giữ gạch chân để người đọc vẫn nhận ra đó là liên kết.

Giữ chữ dễ đọc: độ tương phản

Màu chữ chỉ là một nửa của cặp màu; nửa còn lại là màu nền. WCAG yêu cầu tỷ lệ tương phản tối thiểu 4,5:1 cho chữ thường và 3:1 cho chữ lớn (khoảng 24px, hoặc 19px in đậm).

Chữ xám nhạt kiểu placeholder là lỗi phổ biến nhất. Công cụ dành cho nhà phát triển của Chrome và Firefox hiển thị tỷ lệ tương phản khi bạn kiểm tra một màu chữ.

currentColor: dùng lại màu chữ

currentColor là một từ khóa bằng đúng giá trị color của phần tử. Viền, outline và icon SVG inline có thể dùng nó, nên chỉ cần đổi color một lần là chữ và các chi tiết trang trí đổi màu theo:

Lỗi thường gặp

  • Viết font-color hoặc text-color. Thuộc tính đúng là color.
  • Dùng thẻ <font>. Thẻ này đã lỗi thời; hãy dùng CSS.
  • Tưởng liên kết sẽ kế thừa màu. Đặt a { color: ... } hoặc color: inherit.
  • Chỉ dùng màu để truyền tải thông tin. Câu "Các trường màu đỏ là bắt buộc" sẽ vô nghĩa với người không phân biệt được màu đỏ. Hãy thêm chữ hoặc icon.
  • Chữ xám có độ tương phản thấp. Kiểm tra tỷ lệ: từ 4,5:1 trở lên cho chữ nội dung.
  • Dùng opacity để làm chữ nhạt đi. Nó làm mờ cả phần tử, gồm cả nền và các phần tử con. Hãy dùng màu nhạt hơn hoặc màu có kênh alpha.

Câu hỏi thường gặp

Làm sao đổi màu chữ trong HTML?

Dùng thuộc tính color của CSS, trong stylesheet hoặc trong thuộc tính style: <p style="color: #2563eb;">Blue text</p>. Thẻ <font color> cũ đã lỗi thời.

Thẻ <font> còn được hỗ trợ không?

Trình duyệt vẫn hiển thị nó để các trang web rất cũ không bị hỏng, nhưng thẻ này đã lỗi thời trong HTML và các công cụ kiểm tra (validator) báo nó là lỗi. Hãy dùng color của CSS.

Làm sao đổi màu một từ?

Bọc từ đó trong thẻ <span> rồi đặt màu cho nó: This is <span style="color: #dc2626;">red</span>. Nếu từ đó cũng quan trọng hoặc cần nhấn mạnh, dùng <strong> hoặc <em> thay cho <span>.

Vì sao liên kết không đổi màu khi đặt color cho phần tử cha?

Liên kết có màu riêng do stylesheet mặc định của trình duyệt đặt, nên chúng không kế thừa màu của phần tử cha. Hãy đặt màu trực tiếp cho liên kết (a { color: #2563eb; }) hoặc dùng a { color: inherit; } để theo màu của phần tử cha.

Trong CSS là font-color hay color?

Là color. Không có thuộc tính font-color hay text-color; trình duyệt sẽ bỏ qua chúng.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu