Menu

Gạch chân và gạch ngang chữ trong HTML: thẻ u, ins, s, del

Gạch chân chữ trong HTML bằng <u> hoặc text-decoration của CSS, và gạch ngang chữ bằng <s> hoặc <del>. Tìm hiểu ý nghĩa của từng thẻ, cách <ins> và <del> đánh dấu chỉnh sửa, và vì sao gạch chân chữ không phải liên kết khiến người đọc bối rối.

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 HTML

Có hai cách: thẻ <u>, hoặc thuộc tính CSS text-decoration: underline. Cả hai vẽ ra cùng một đường gạch:

Vấn đề với mọi kiểu gạch chân nằm ở dòng thứ ba: người đọc nghĩ chữ được gạch chân là liên kết và bấm vào. Chỉ gạch chân chữ thường khi có lý do rõ ràng.

Ý nghĩa của thẻ u

<u> không phải nút "gạch chân" đa năng. Trong HTML hiện nay, nó có nghĩa là chữ mang một chú thích không nói thành lời: một dấu hiệu cho biết "chỗ này có điều đặc biệt" mà không nói là gì. Những cách dùng thực tế phổ biến:

  • đánh dấu lỗi chính tả (như trình soạn thảo văn bản vẫn làm, thường bằng đường lượn sóng màu đỏ),
  • đánh dấu tên riêng trong văn bản tiếng Trung, một quy ước trình bày ở đó.

Để nhấn mạnh, hãy dùng <em> hoặc <strong> (xem chữ đậm), còn tên sách thì dùng <cite>. Nếu chỉ muốn vẻ ngoài, hãy dùng CSS.

Gạch ngang chữ: s và del

HTML có hai thẻ vẽ đường ngang qua chữ, và chúng mang ý nghĩa khác nhau:

ThẻÝ nghĩaCách dùng thường gặp
<s>Không còn chính xác hay phù hợp, được giữ lại làm ngữ cảnhGiá cũ, loại vé đã bán hết
<del>Đã bị xóa khỏi tài liệuChỉnh sửa, nhật ký thay đổi, việc đã xong trong danh sách việc cần làm

Đánh dấu chỉnh sửa bằng ins và del

<ins> là bạn đồng hành của <del>: nó đánh dấu chữ được thêm vào. Mặc định trình duyệt gạch chân nó. Cả hai đều nhận datetime (thời điểm thay đổi) và cite (URL giải thích lý do):

Kiểu đỏ và xanh lá này chính là vẻ ngoài quen thuộc của một bản diff. text-decoration: none trên ins bỏ đường gạch chân mặc định để nó không trông giống liên kết.

Gạch chân và gạch ngang bằng CSS

text-decoration lo phần hiển thị cho mọi phần tử: nó nhận màu và kiểu đường, còn text-decoration-thickness đặt độ dày. Với những đường gạch chỉ để trang trí, đây là công cụ đúng:

Cách bỏ gạch chân khỏi liên kết, khoảng cách đường gạch chân và các chi tiết khác của text-decoration có ở trang gạch chân trong CSS.

Khả năng tiếp cận

Trình đọc màn hình hỗ trợ <s>, <del> và <ins> không đồng đều: một số đọc ra là đã xóa hay đã chèn, nhiều trình đọc chúng như chữ bình thường, nên người nghe có thể nghe "Price 49 dollars 29 dollars" mà không biết giá nào là hiện tại. Khi sự khác biệt quan trọng, hãy nói rõ bằng lời, ví dụ bằng chữ ẩn khỏi màn hình nhưng vẫn được đọc, hoặc đơn giản là "Giá cũ 49,giaˊmới49, giá mới 29".

Lỗi thường gặp

  • Gạch chân chữ không phải liên kết. Người đọc sẽ thử bấm vào. Hãy làm nổi bật bằng chữ đậm, màu sắc hoặc nền.
  • Dùng <u> để nhấn mạnh. Hãy dùng <em> hoặc <strong>.
  • Dùng <strike>. Thẻ này đã lỗi thời. Hãy dùng <s>, <del> hoặc text-decoration: line-through.
  • Dùng <s> cho nội dung đã xóa trong lịch sử tài liệu. Đó là việc của <del>, thẻ còn ghi lại được thời điểm thay đổi.
  • Chỉ dựa vào đường gạch để truyền đạt ý nghĩa. Nhiều trình đọc màn hình không đọc nó ra.

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

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

Bọc chữ trong <u>, hoặc dùng text-decoration: underline trong CSS. Chỉ dùng <u> cho ý nghĩa riêng của nó (như đánh dấu một từ viết sai chính tả); nếu chỉ muốn gạch chân cho đẹp, hãy dùng CSS trên một <span> hoặc chính phần tử đó.

Làm sao gạch ngang chữ trong HTML?

Dùng <s> cho chữ không còn đúng nữa, như giá cũ, và <del> cho chữ đã bị xóa trong một lần chỉnh sửa. Cả hai đều vẽ một đường ngang qua chữ. Trong CSS, text-decoration: line-through cho ra hình dạng tương tự.

Thẻ <u> có bị loại bỏ không?

Không. <u> từng bị loại bỏ trong HTML 4 nhưng quay lại trong HTML5 với ý nghĩa mới: chữ có chú thích không bằng lời, như lỗi chính tả hay tên riêng trong văn bản tiếng Trung. Nó hợp lệ, chỉ là hiếm khi là lựa chọn đúng.

Thẻ <strike> giờ ra sao?

<strike> đã lỗi thời. Trình duyệt vẫn vẽ nó thành đường gạch ngang, nhưng nó không phải HTML hợp lệ. Hãy dùng <s> hoặc <del> tùy ý nghĩa, hoặc text-decoration: line-through.

<s> và <del> khác nhau thế nào?

<s> đánh dấu chữ không còn phù hợp hay chính xác nhưng được giữ lại để làm ngữ cảnh, như một mức giá bị gạch. <del> đánh dấu chữ đã bị xóa khỏi tài liệu, thường đứng cạnh một <ins> cho biết nội dung thay thế, và có thể mang thuộc tính datetime và cite.

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