Menu

Gạch chân CSS: text-decoration, màu, khoảng cách và cách bỏ

Gạch chân chữ bằng text-decoration, rồi tùy chỉnh đường gạch: màu, kiểu, độ dày và khoảng cách tới chữ. Kèm cách bỏ gạch chân của liên kết, và khi nào không nên bỏ.

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 gạch chân chữ trong CSS

text-decoration: underline vẽ một đường dưới chữ. Đường này lấy màu chữ, trừ khi bạn đặt màu riêng cho nó.

Dòng thứ hai dùng cách viết gọn text-decoration cho loại đường, kiểu và màu, rồi đặt độ dày và khoảng cách bằng các thuộc tính riêng. Đặc tả cũng cho phép ghi độ dày trong cách viết gọn, nhưng Safari bỏ qua cả khai báo khi có nó, nên hãy viết text-decoration-thickness riêng.

Các thuộc tính text-decoration

Thuộc tínhGiá trịMặc định
text-decoration-lineunderline, overline, line-through, none (có thể kết hợp)none
text-decoration-stylesolid, double, dotted, dashed, wavysolid
text-decoration-colorMàu bất kỳcurrentColor (màu chữ)
text-decoration-thicknessMột độ dài, một phần trăm, auto, from-fontauto
text-underline-offsetMột độ dài, một phần trăm, autoauto

text-decoration là cách viết gọn cho bốn thuộc tính đầu, nhưng đừng đưa độ dày vào đó: Safari bỏ qua khai báo text-decoration có chứa độ dày. text-underline-offset là thuộc tính riêng và phải viết tách ra.

Kiểu, màu và độ dày

Dời đường gạch chân: text-underline-offset

Mặc định, đường gạch nằm sát các chữ cái và chừa khoảng trống quanh phần đuôi chữ như g, p và y. text-underline-offset đẩy nó xuống thấp hơn, thường trông gọn gàng hơn trên tiêu đề và liên kết:

Khoảng trống quanh phần đuôi chữ là do text-decoration-skip-ink: auto, được bật mặc định. Đặt nó thành none để có đường gạch liền mạch.

Bỏ gạch chân của liên kết

Liên kết được gạch chân bởi stylesheet mặc định của trình duyệt. text-decoration: none bỏ đường gạch này. Vì nhiều người đọc nhận ra liên kết nhờ gạch chân, hãy hiện lại nó khi hover và khi focus bằng bàn phím, và cho liên kết một màu khác với chữ thường:

Thanh điều hướng và nút là chỗ hợp lý để bỏ gạch chân, vì vị trí của chúng đã cho thấy đó là "liên kết". Trong một đoạn văn, hãy giữ gạch chân. Xem thêm về các trạng thái của liên kết ở trang hover.

Gạch trên và gạch ngang

text-decoration-line cũng vẽ được đường phía trên chữ hoặc xuyên qua chữ, và nhận nhiều giá trị cùng lúc:

.old-price { text-decoration: line-through; }
.both      { text-decoration-line: underline overline; }

Gạch ngang bằng CSS chỉ mang tính hiển thị. Khi chữ là nội dung đã bị xóa (giá đã thay đổi, mục đã bị bỏ), hãy đánh dấu bằng <s> hoặc <del>, như trang gạch chân HTML hướng dẫn, để ý nghĩa nằm trong mã HTML chứ không chỉ ở phần định dạng.

Lỗi thường gặp

  • Dùng <u> để gạch chân cho đẹp. <u> dành cho chữ được đánh dấu là khác biệt, như lỗi chính tả. Muốn gạch chân để trang trí, hãy dùng CSS.
  • Gạch chân chữ không phải liên kết. Người đọc sẽ thử bấm vào. Hãy dùng chữ đậm, màu hoặc nền để nhấn mạnh.
  • Bỏ gạch chân liên kết trong nội dung mà không có dấu hiệu khác thay thế. Chỉ riêng màu là chưa đủ với người không phân biệt được màu.
  • Cố bỏ gạch chân của phần tử cha từ phần tử con. Không thể gỡ nó từ bên trong; hãy sửa phần tử cha hoặc cho phần tử con inline-block.
  • Tưởng text-underline-offset nằm trong cách viết gọn. Nó là một thuộc tính riêng.
  • Đưa độ dày vào cách viết gọn. text-decoration: underline 2px chạy được trên Chrome và Firefox, nhưng Safari bỏ qua cả khai báo. Hãy dùng text-decoration-thickness.

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

Làm sao gạch chân chữ trong CSS?

Dùng text-decoration: underline; trên phần tử. Để tùy chỉnh đường gạch, thêm text-decoration-color, text-decoration-style, text-decoration-thickness và text-underline-offset.

Làm sao bỏ gạch chân của liên kết?

Đặt text-decoration: none; trên phần tử a. Nhớ để liên kết vẫn nổi bật theo cách khác (màu riêng cộng với gạch chân khi hover hoặc focus), vì nhiều người đọc dựa vào gạch chân để nhận ra liên kết.

Làm sao đổi màu gạch chân?

Dùng text-decoration-color, hoặc cách viết gọn: text-decoration: underline #f59e0b;. Nếu không đặt, đường gạch dùng màu chữ.

Làm sao tạo khoảng cách giữa chữ và đường gạch chân?

Dùng text-underline-offset, ví dụ text-underline-offset: 4px;. Giá trị càng lớn, đường gạch càng nằm xa phía dưới chữ.

Vì sao không bỏ được gạch chân trên phần tử con?

Đường gạch chân do phần tử cha vẽ được trải qua cả các phần tử con và không thể gỡ từ bên trong chúng. Hãy bỏ nó trên chính phần tử đặt ra nó, hoặc cho phần tử con display: inline-block, vì trang trí của phần tử cha không chạm tới kiểu hiển thị này.

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