Dễ hiểu

Bài viết này cung cấp lời khuyên thực tế về cách viết nội dung web của bạn để nội dung đó tuân thủ các tiêu chí thành công được nêu trong nguyên tắc Dễ hiểu của Web Content Accessibility Guidelines (WCAG) 2.0 và 2.1. Dễ hiểu nói rằng thông tin và hoạt động của giao diện người dùng phải dễ hiểu.

Note: Để đọc định nghĩa của W3C về Dễ hiểu và các hướng dẫn, tiêu chí thành công của nó, xem Nguyên tắc 3: Dễ hiểu — Thông tin và hoạt động của giao diện người dùng phải dễ hiểu.

Hướng dẫn 3.1 — Có thể đọc: Làm cho nội dung văn bản có thể đọc và dễ hiểu

Hướng dẫn này tập trung vào việc làm cho nội dung văn bản dễ hiểu nhất có thể.

Tiêu chí thành công Cách đáp ứng tiêu chí Tài nguyên thực hành
3.1.1 Ngôn ngữ của trang (A) Ngôn ngữ con người mặc định của mỗi trang web nên có thể được phát hiện bằng mã. Điều này là thiết yếu để đảm bảo người đọc đã đến đúng trang được viết bằng ngôn ngữ phù hợp với họ. Cách đơn giản nhất để đạt được điều này là đặt thuộc tính lang trên phần tử <html> của trang, với giá trị bằng mã ngôn ngữ đại diện tốt nhất cho ngôn ngữ mà trang được viết. Xem Đặt ngôn ngữ chính của tài liệu.
3.1.2 Ngôn ngữ của các phần (AA)

Trong trường hợp nội dung của một trang bao gồm các từ hoặc cụm từ thuộc ngôn ngữ khác với ngôn ngữ chính, hãy dùng thuộc tính lang trên một phần tử bao bọc thuật ngữ đó (ví dụ: một <span> nếu không có phần tử ngữ nghĩa phù hợp) để đặt ngôn ngữ thích hợp cho nó.

Bạn không cần đặt ngôn ngữ khác cho các từ hoặc cụm từ giống nhau bất kể ngôn ngữ nào (ví dụ: tên riêng, thuật ngữ kỹ thuật không thuộc về một ngôn ngữ cụ thể).

3.1.3 Từ ngữ bất thường (AAA) Khi dùng thuật ngữ kỹ thuật, biệt ngữ, hoặc thành ngữ/tiếng lóng, nên cung cấp định nghĩa cho các cụm từ/từ như vậy. Website của bạn nên cung cấp một bảng thuật ngữ chứa định nghĩa của các từ/thuật ngữ đó để bạn có thể liên kết tới khi chúng xuất hiện, hoặc ít nhất cung cấp định nghĩa ở đâu đó trong đoạn văn xung quanh, hoặc trong một danh sách mô tả ở cuối trang.
3.1.4 Chữ viết tắt (AAA)

Khi dùng chữ viết tắt, bạn nên cung cấp dạng đầy đủ của nó, hoặc định nghĩa nếu cần.

Phần tử <abbr> thường được xem là cách ưu tiên để cung cấp dạng mở rộng cho một chữ viết tắt — nó nhận một thuộc tính title chứa dạng mở rộng, và nội dung này xuất hiện khi chữ viết tắt được rê chuột qua. Tuy nhiên, nội dung title không thể truy cập bằng bàn phím, và cũng không được trình đọc màn hình đọc ra một cách đáng tin cậy. Cách tốt hơn là lại cung cấp liên kết tới các trang bảng thuật ngữ chứa phần giải thích và dạng mở rộng của chữ viết tắt, hoặc ít nhất đưa chúng vào văn bản xung quanh trong ngữ cảnh.

Xem Chữ viết tắt.
3.1.5 Trình độ đọc (AAA)

Nếu nội dung văn bản yêu cầu trình độ đọc cao hơn mức trung học cơ sở (thường là trẻ em khoảng 11-14 tuổi), hãy cung cấp tài liệu giải thích bổ sung để hỗ trợ những người không đọc được nó, hoặc cung cấp một phiên bản thay thế được viết ở mức trung học cơ sở.

Điều này không có nghĩa là mọi chủ đề phải được mọi người hiểu, mà là phong cách viết nên có thể tiếp cận được với mọi người. Tốt hơn là chỉ viết tất cả nội dung ở mức trung học cơ sở, kể cả tài liệu kỹ thuật như hướng dẫn lập trình, trừ khi có lý do tốt để không làm vậy (ví dụ: một phong cách khác để tạo hiệu ứng thơ ca), hoặc chúng phải được viết theo một phong cách nghiêm ngặt (ví dụ: đặc tả W3C).

3.1.6 Phát âm (AAA)

Nên cung cấp một cơ chế để người dùng có thể tiếp cận cách phát âm của các từ khi điều đó cần thiết để hiểu đầy đủ nội dung.

Phần tử HTML <audio> có thể được dùng để tạo một điều khiển cho phép người đọc phát lại một tệp âm thanh chứa cách phát âm đúng, và cũng hợp lý khi thêm một hướng dẫn phát âm dạng văn bản sau các từ khó, theo cách bạn thấy trong các mục từ điển.

Xem Nội dung video và âm thanh, và Hướng dẫn phát âm cho từ điển tiếng Anh

Hướng dẫn 3.2 — Có thể dự đoán: Làm cho các trang web xuất hiện và hoạt động theo những cách có thể dự đoán

Hướng dẫn này tập trung vào việc làm cho giao diện người dùng trực quan và dễ hiểu.

Tiêu chí thành công Cách đáp ứng tiêu chí Tài nguyên thực hành
3.2.1 Khi focus (A)

Khi một điều khiển hoặc tính năng trang khác nhận focus, nó không nên thay đổi ngữ cảnh theo cách có thể làm người dùng bối rối hoặc mất phương hướng.

Đây là vấn đề của thiết kế hợp lý - người dùng không muốn giao diện gây bất ngờ; họ muốn mọi thứ trực quan và hoạt động như mong đợi. Ví dụ, việc focus vào một tùy chọn menu điều hướng không nên thay đổi trang đang hiển thị - nó nên được kích hoạt trước khi hiển thị thay đổi.

Sự kiện focus của Element chứa một số thông tin hữu ích. Cũng xem Xây dựng lại khả năng truy cập bằng bàn phím để có một số ý tưởng triển khai hữu ích.
3.2.2 Khi nhập dữ liệu (A)

Khi dữ liệu được nhập vào một điều khiển, hoặc một cài đặt thay đổi, ngữ cảnh không nên thay đổi một cách bất ngờ. Người dùng nên được cảnh báo/nhắc nhở về thay đổi sắp xảy ra trước khi nó diễn ra.

Một lần nữa, nên áp dụng thiết kế hợp lý. Ví dụ, nếu nhấn một nút khiến ứng dụng thoát khỏi chế độ xem hiện tại, người dùng nên được yêu cầu xác nhận hành động này, lưu công việc của họ nếu phù hợp, v.v.

Sự kiện input hữu ích ở đây.
3.2.3 Điều hướng nhất quán (AA)

Kiểu dáng và vị trí của menu/điều khiển điều hướng nên nhất quán giữa các trang hoặc chế độ xem khác nhau của một trang web, và các mục hiện có nên xuất hiện theo cùng một thứ tự, ngay cả khi ví dụ có thêm mục mới. Nếu người dùng đã khởi xướng một thay đổi, chẳng hạn chọn một bảng màu khác hoặc vị trí khác cho điều hướng, lựa chọn của họ nên được tôn trọng trên tất cả các trang.

Một lần nữa, thiết kế hợp lý - hãy làm cho các điều khiển điều hướng giống nhau trên tất cả các trang hoặc chế độ xem.

Xem Cấu trúc các phần trang một cách hợp lý để biết thông tin về cách đánh dấu hiện đại cho bố cục. Cũng xem Tạo kiểu liên kết như nút để có một ví dụ menu điều hướng dễ tiếp cận hữu ích.
3.2.4 Xác định nhất quán (AA)

Các điều khiển hoặc thành phần có cùng chức năng nên được xác định theo cùng một cách trên các trang hoặc chế độ xem khác nhau. Ví dụ, một bộ chuyển đổi tiền tệ xuất hiện trên mọi trang của một trang web du lịch thế giới nên hoàn toàn giống nhau, cả về ngữ nghĩa lẫn nhãn.

Một lần nữa, thiết kế hợp lý!

"Labels" có thể chỉ thông tin mô tả trong nội dung văn bản, hoặc nhãn của phần tử form HTML. Xem Dùng nhãn văn bản có ý nghĩa để biết thêm thông tin.
3.2.5 Thay đổi khi được yêu cầu (AAA)

Các thay đổi ngữ cảnh có thể gây bối rối hoặc làm người dùng mất phương hướng chỉ nên xảy ra khi người dùng yêu cầu, HOẶC người dùng phải có thể tắt chúng.

Nếu bạn cần một thứ gì đó thay đổi đáng kể chế độ xem hiện tại (ví dụ: nội dung hoặc điều khiển), hãy để người dùng quyết định khi nào họ muốn thay đổi đó xảy ra (ví dụ: trang nào để hiển thị, khi nào chuyển sang ảnh tiếp theo trong bộ sưu tập...)

Nếu bạn cần một thứ như carousel trên trang, hãy cung cấp tùy chọn để dừng việc tự động chuyển trang. Tốt hơn là tránh chức năng như vậy nếu có thể.

3.2.6 Trợ giúp nhất quán (A)

Các trang web có cơ chế trợ giúp, bao gồm tùy chọn tự trợ giúp và thông tin liên hệ con người, nếu được lặp lại trên nhiều trang web, cần đặt các cơ chế đó theo cùng một thứ tự trên tất cả các trang, trừ khi thay đổi được người dùng khởi xướng.

Hãy xem tài liệu consistent help cho tiêu chuẩn này để biết thêm.

Hướng dẫn 3.3 — Hỗ trợ nhập liệu: Giúp người dùng tránh và sửa lỗi

Hướng dẫn này tập trung vào việc giúp người dùng nhập đúng thông tin khi cần thiết với số lỗi tối thiểu.

Tiêu chí thành công Cách đáp ứng tiêu chí Tài nguyên thực hành
3.3.1 Nhận diện lỗi (A)

Khi người dùng đang điền form hoặc chọn giữa các tùy chọn, mọi lỗi được phát hiện nên được báo rõ cho người dùng, cùng với điều khiển form liên quan đến lỗi đó.

Nên triển khai phát hiện và xử lý lỗi phía client, thông qua các tính năng xác thực form HTML, và/hoặc JavaScript, tùy theo điều gì phù hợp nhất cho tình huống của bạn. Khi phát hiện lỗi, nên hiển thị một thông báo lỗi trực quan bên cạnh input form bị lỗi để giúp người dùng sửa dữ liệu nhập. Với người dùng trình đọc màn hình, bạn có thể dùng vùng sống aria để cảnh báo người dùng về thay đổi trên trang.

Ghi chú: Xác thực phía server luôn nên được dùng cùng với xác thực phía client. Xác thực phía client quá dễ bị tắt hoặc vượt qua, nên không thể chỉ dựa vào nó.

Xem Xác thực dữ liệu form để có thông tin xác thực toàn diện, và WAI-ARIA: Cập nhật nội dung động để biết thông tin về vùng sống.
3.3.2 Nhãn hoặc hướng dẫn (A)

Cần cung cấp hướng dẫn rõ ràng khi yêu cầu nhập dữ liệu. Khi cần một hướng dẫn hoặc lời nhắc ngắn, bạn có thể dùng các phần tử <label> cho các input đơn như tên hoặc tuổi, hoặc kết hợp <label><fieldset>/<legend> cho các input nhiều phần đi cùng nhau (như các thành phần của ngày sinh hoặc địa chỉ bưu điện).

Khi cần giải thích phức tạp hơn, bạn luôn có thể thêm các đoạn văn giải thích, hoặc có lẽ bạn cần làm cho form của mình trực quan hơn.

3.3.3 Gợi ý sửa lỗi (AA)

Khi phát hiện lỗi và biết được gợi ý sửa lỗi, hãy cung cấp chúng cho người dùng (ví dụ: gợi ý lựa chọn thay thế khi người dùng chọn tên người dùng và đã chọn một tên đã có người khác dùng), trừ khi làm vậy sẽ gây ra vấn đề bảo mật (ví dụ: khi nhập mật khẩu) hoặc vấn đề ngữ cảnh (ví dụ: họ đang cố trả lời câu hỏi trong ứng dụng quiz).

Trong những trường hợp như vậy, khi phù hợp, bạn có thể sẽ dùng kết hợp JavaScript và chức năng phía server để kiểm tra xem dữ liệu nhập có đúng không, và nếu không, có thể đưa ra những gợi ý khả thi nào cho người dùng. Những gợi ý đó nên được hiển thị một cách hữu ích trong ngữ cảnh, giống như các thông báo lỗi (xem 3.3.1).

Chưa có gợi ý hướng dẫn nào.
3.3.4 Ngăn ngừa lỗi (Pháp lý, tài chính, dữ liệu) (AA)

Trong trường hợp các form liên quan đến việc nhập dữ liệu nhạy cảm (như thỏa thuận pháp lý, giao dịch thương mại điện tử, hoặc dữ liệu cá nhân), ít nhất một trong các điều sau phải đúng:

  • Việc gửi biểu mẫu có thể đảo ngược.
  • Dữ liệu được kiểm tra lỗi, và người dùng được cho cơ hội sửa chúng.
  • Có sẵn một cơ chế để xác nhận và sửa thông tin trước khi gửi cuối cùng.

Có thể đảo ngược — đối với bất kỳ chế độ xem nào có thể nhập dữ liệu, hãy cung cấp một chế độ xem tương đương cho phép bạn chỉnh sửa hoặc thậm chí xóa một mục nhập, nếu phù hợp (ví dụ, xem khung web Django).

Kiểm tra dữ liệu — như đã nêu ở 3.3.1, nên dùng kết hợp xác thực phía client và phía server để phát hiện lỗi và hiển thị thông báo hữu ích cho người dùng để họ sửa dữ liệu nhập.

Xác nhận và sửa — khi phù hợp, sau khi điền một loạt trường form để thực hiện một tác vụ (như mua sản phẩm), người dùng nên được hiển thị một màn hình xác nhận nơi họ có thể xem lại dữ liệu nhập và sửa bất cứ gì trông không đúng. Mẫu này thường được dùng trên các site thương mại điện tử như Amazon.

3.3.5 Có sẵn trợ giúp theo ngữ cảnh (AAA) Cung cấp hướng dẫn và các gợi ý phù hợp khác trong ngữ cảnh để hỗ trợ hoàn thành và gửi form. Điều này thực ra chỉ phát triển từ 3.3.1 và các tiêu chí tương tự khác nhưng đòi hỏi thông tin và dịch vụ trợ giúp theo ngữ cảnh kỹ lưỡng hơn, ví dụ: cung cấp một liên kết riêng tới trang trợ giúp hoặc dịch vụ trên mỗi trang, cung cấp các ví dụ cho thấy kết quả hoàn thành thành công trông như thế nào.
3.3.6 Ngăn ngừa lỗi (Mọi trường hợp) (AAA) Nguyên tắc này phát triển từ 3.3.4, mở rộng các yêu cầu của nó cho mọi tình huống nhập liệu của người dùng, chứ không chỉ những tình huống liên quan đến dữ liệu nhạy cảm. Xem lại 3.3.4.
3.3.7 Mục nhập trùng lặp (A) Thông tin bắt buộc đã được người dùng nhập hoặc cung cấp trước đó trong cùng một quy trình hoặc luồng người dùng sẽ được tự động điền sẵn hoặc được người dùng chọn từ một danh sách tùy chọn, trừ khi việc nhập lại thông tin là thiết yếu hoặc bắt buộc vì lý do bảo mật, hoặc nếu thông tin đó không còn hợp lệ. Xem Tìm hiểu mục nhập trùng lặp để tìm hiểu thêm.
3.3.8 Xác thực có thể truy cập (Mức tối thiểu) (AA) Các bài kiểm tra chức năng nhận thức, như ghi nhớ mật khẩu, không được yêu cầu cho bất kỳ bước nào trong quy trình xác thực trừ khi có một lựa chọn thay thế, chẳng hạn như nhận dạng đối tượng hoặc nội dung cá nhân (ví dụ: hình ảnh, video và âm thanh), hoặc một cơ chế hỗ trợ (ví dụ: sao chép và dán và tự lưu mật khẩu). Xem tài liệu xác thực có thể truy cập cho tiêu chuẩn này để tìm hiểu thêm.
3.3.9 Xác thực có thể truy cập (Nâng cao) (AAA) Một bài kiểm tra chức năng nhận thức, như ghi nhớ mật khẩu, không được yêu cầu cho bất kỳ bước nào trong quy trình xác thực nếu không cung cấp lựa chọn thay thế không dựa vào kiểm tra chức năng nhận thức hoặc cung cấp một cơ chế hỗ trợ người dùng hoàn thành bài kiểm tra chức năng nhận thức. Các bài kiểm tra xác thực yêu cầu người dùng nhận diện đối tượng hoặc xác định nội dung không phải văn bản mà người dùng đã cung cấp cho website là được phép. Xem tài liệu xác thực có thể truy cập nâng cao (AAA) để tìm hiểu thêm.

Xem thêm