Các lựa chọn thay thế nhãn và văn bản

Để trình đọc màn hình hiển thị giao diện người dùng bằng giọng nói cho người dùng, các phần tử có ý nghĩa phải có nhãn hoặc văn bản thay thế phù hợp. Nhãn hoặc văn bản thay thế cung cấp cho phần tử một tên có thể truy cập, một trong những thuộc tính chính để biểu thị ngữ nghĩa của phần tử trong cây hỗ trợ tiếp cận.

Khi kết hợp tên của một phần tử với vai trò của phần tử đó, tên này sẽ cung cấp ngữ cảnh cho người dùng để họ có thể hiểu được loại phần tử đang tương tác và cách phần tử đó được thể hiện trên trang. Nếu không có tên, thì trình đọc màn hình chỉ thông báo vai trò của phần tử. Hãy tưởng tượng bạn đang cố gắng điều hướng một trang và nghe thấy "nút", "hộp đánh dấu", "hình ảnh" mà không có bất kỳ ngữ cảnh bổ sung nào. Đây là lý do khiến việc gắn nhãn và thay thế văn bản có vai trò quan trọng đối với một trải nghiệm tốt và dễ tiếp cận.

Kiểm tra tên của một phần tử

Bạn có thể dễ dàng kiểm tra tên hỗ trợ tiếp cận của một phần tử bằng cách sử dụng Công cụ của Chrome cho nhà phát triển:

  1. Nhấp chuột phải vào một phần tử rồi chọn Kiểm tra. Thao tác này sẽ mở bảng điều khiển Thành phần DevTools.
  2. Trong bảng điều khiển Thành phần, hãy tìm ngăn Hỗ trợ tiếp cận. Nó có thể bị ẩn sau ký hiệu ».
  3. Trong trình đơn thả xuống Computed Properties (Thuộc tính được tính toán), hãy tìm thuộc tính Name (Tên).
Ngăn hỗ trợ tiếp cận của Công cụ cho nhà phát triển hiển thị tên được tính toán cho một nút.

Cho dù bạn đang xem xét img có văn bản alt hay input với label, tất cả các trường hợp này đều dẫn đến cùng một kết quả: cung cấp cho một phần tử tên dễ tiếp cận.

Kiểm tra xem có tên nào bị thiếu không

Có nhiều cách để thêm tên có thể truy cập vào một phần tử, tuỳ thuộc vào loại phần tử đó. Bảng sau đây liệt kê các loại phần tử phổ biến nhất cần tên và đường liên kết dễ tiếp cận để giải thích cách thêm phần tử.

Gắn nhãn cho tài liệu và khung

Mỗi trang phải có một phần tử title giải thích ngắn gọn nội dung của trang. Phần tử title cung cấp tên dễ đọc cho trang. Khi trình đọc màn hình truy cập vào trang, đây là văn bản đầu tiên được thông báo.

Ví dụ: trang bên dưới có tiêu đề "Công thức làm bánh Maple Bar nhanh của Mary":

<!doctype html>
  <html lang="en">
    <head>
      <title>Mary's Maple Bar Fast-Baking Recipe</title>
    </head>
  <body>
      </body>
</html>

Tương tự, mọi phần tử frame hoặc iframe đều phải có thuộc tính title:

<iframe title="An interactive map of San Francisco" src="…"></iframe>

Mặc dù nội dung của iframe có thể chứa phần tử title nội bộ riêng, nhưng trình đọc màn hình thường dừng ở ranh giới khung và thông báo vai trò của phần tử – "khung" – và tên thành phần hỗ trợ tiếp cận do thuộc tính title cung cấp. Thao tác này cho phép người dùng quyết định xem họ có muốn nhập khung hay bỏ qua khung đó hay không.

Thêm văn bản thay thế cho hình ảnh và đối tượng

img phải luôn đi kèm với thuộc tính alt để đặt tên có thể truy cập cho hình ảnh. Nếu hình ảnh không tải được, văn bản alt sẽ được dùng làm phần giữ chỗ để người dùng biết được hình ảnh đó muốn truyền tải nội dung gì.

Viết được văn bản alt phù hợp cũng là một nghệ thuật, nhưng bạn có thể tuân theo một số nguyên tắc sau đây:

  1. Xác định xem hình ảnh có cung cấp nội dung khó có thể đạt được khi đọc văn bản xung quanh hay không.
  2. Nếu có, hãy truyền tải nội dung một cách ngắn gọn nhất có thể.

Nếu hình ảnh đóng vai trò trang trí và không cung cấp nội dung hữu ích nào, bạn có thể gán cho hình ảnh đó một thuộc tính alt="" trống để xoá hình ảnh đó khỏi cây hỗ trợ tiếp cận.

Hình ảnh được gói trong một đường liên kết phải sử dụng thuộc tính alt của img để mô tả nơi người dùng sẽ chuyển đến nếu họ nhấp vào đường liên kết:

<a href="https://en.wikipedia.org/wiki/Google">
  <img alt="Google's wikipedia page" src="google-logo.jpg">
</a>

Tương tự, nếu một phần tử <input type="image"> được dùng để tạo một nút hình ảnh, thì phần tử đó phải chứa văn bản alt mô tả thao tác diễn ra khi người dùng nhấp vào nút đó:

<form>
  <label>
    Username:
    <input type="text">
  </label>
  <input type="image" alt="Sign in" src="./sign-in-button.png">
</form>

Đối tượng được nhúng

Các phần tử <object> thường được dùng để nhúng như Flash, PDF hoặc ActiveX cũng phải chứa văn bản thay thế. Tương tự như hình ảnh, văn bản này sẽ hiển thị nếu phần tử không hiển thị được. Văn bản thay thế nằm bên trong phần tử object dưới dạng văn bản thông thường, chẳng hạn như "Báo cáo hằng năm" ở bên dưới:

<object type="application/pdf" data="/report.pdf">
Annual report.
</object>

Các nút và đường liên kết thường rất quan trọng đối với trải nghiệm của một trang web và điều quan trọng là cả hai đều có tên dễ tiếp cận.

Nút

Phần tử button luôn cố gắng tính toán tên có thể truy cập bằng nội dung văn bản của phần tử đó. Đối với các nút không thuộc form, bạn chỉ cần viết một thao tác rõ ràng làm nội dung văn bản là có thể tạo một tên dễ truy cập.

<button>Book Room</button>

Biểu mẫu dành cho thiết bị di động có nút &quot;Đặt phòng&quot;.

Một trường hợp ngoại lệ phổ biến đối với quy tắc này là nút biểu tượng. Nút biểu tượng có thể sử dụng hình ảnh hoặc phông chữ biểu tượng để cung cấp nội dung văn bản cho nút. Ví dụ: các nút dùng trong trình chỉnh sửa What You See Is What You Get (WYSIWYG) để định dạng văn bản thường chỉ là các ký hiệu đồ hoạ:

Nút biểu tượng căn trái.

Khi làm việc với các nút biểu tượng, bạn nên cung cấp cho chúng một tên rõ ràng, dễ tiếp cận bằng thuộc tính aria-label. aria-label ghi đè mọi nội dung văn bản bên trong nút, cho phép bạn mô tả rõ ràng thao tác cho bất kỳ ai sử dụng trình đọc màn hình.

<button aria-label="Left align"></button>

Tương tự như các nút, đường liên kết chủ yếu lấy tên hỗ trợ tiếp cận từ nội dung văn bản. Một mẹo hay khi tạo đường liên kết là đặt đoạn văn bản có ý nghĩa nhất vào chính đường liên kết đó, thay vì các từ đệm như "Tại đây" hoặc "Đọc thêm".

Không đủ thông tin mô tả
Check out our guide to web performance <a href="/guide">here</a>.
Nội dung hữu ích!
Check out <a href="/guide">our guide to web performance</a>.

Điều này đặc biệt hữu ích cho trình đọc màn hình cung cấp lối tắt để liệt kê tất cả các đường liên kết trên trang. Nếu các đường liên kết chứa đầy văn bản lấp đầy lặp lại, thì các phím tắt này sẽ trở nên kém hữu ích hơn nhiều:

Trình đơn liên kết của VoiceOver có từ &#39;here&#39;.
Ví dụ về VoiceOver, một trình đọc màn hình dành cho macOS, hiển thị trình đơn điều hướng bằng đường liên kết.

Thành phần biểu mẫu nhãn

Có hai cách để liên kết nhãn với một phần tử biểu mẫu, chẳng hạn như hộp đánh dấu. Một trong hai phương thức này sẽ khiến văn bản nhãn cũng trở thành mục tiêu nhấp cho hộp đánh dấu, điều này cũng hữu ích cho người dùng chuột hoặc màn hình cảm ứng. Để liên kết một nhãn với một phần tử, hãy làm như sau:

  • Đặt phần tử đầu vào bên trong một phần tử nhãn
<label>
  <input type="checkbox">Receive promotional offers?</input>
</label>
  • Hoặc sử dụng thuộc tính for của nhãn và tham chiếu đến id của phần tử
<input id="promo" type="checkbox"></input>
<label for="promo">Receive promotional offers?</label>

Khi hộp đánh dấu được gắn nhãn chính xác, trình đọc màn hình có thể báo cáo rằng thành phần này có vai trò là hộp đánh dấu, đang ở trạng thái đã đánh dấu và có tên là "Receive promotional offers?" (Nhận ưu đãi khuyến mãi?) như trong ví dụ về VoiceOver bên dưới:

Kết quả đầu ra văn bản của VoiceOver cho thấy &quot;Có nhận ưu đãi khuyến mãi không?&quot;

VIỆC CẦN LÀM: DevSite – Bài đánh giá Suy nghĩ và kiểm tra