ARIA: thuộc tính aria-label
Thuộc tính aria-label định nghĩa một giá trị chuỗi có thể được dùng để đặt tên cho một phần tử, miễn là vai trò của phần tử đó không cấm đặt tên.
Mô tả
Đôi khi, tên truy cập mặc định của một phần tử bị thiếu, hoặc tên truy cập không mô tả chính xác nội dung của phần tử và không có nội dung nào nhìn thấy được trong DOM có thể liên kết với đối tượng để tạo ý nghĩa cho nó. Một ví dụ phổ biến là một nút chứa biểu tượng SVG mà không có bất kỳ văn bản nào.
Trong các trường hợp phần tử không nằm trong danh sách bị cấm, không có tên truy cập hoặc tên truy cập không chính xác và không có nội dung nào nhìn thấy được trong DOM có thể được tham chiếu qua thuộc tính aria-labelledby, thì thuộc tính aria-label có thể được dùng để định nghĩa một chuỗi gán nhãn cho phần tử tương tác mà nó được đặt lên. Điều này cung cấp cho phần tử một tên truy cập.
Đoạn mã dưới đây cho thấy ví dụ về cách dùng thuộc tính aria-label để cung cấp tên truy cập cho phần tử <button>. Nút trong ví dụ này chứa một hình SVG và không có nội dung chữ, vì vậy aria-label là rất cần thiết để người dùng trình đọc màn hình hiểu chức năng của nó, trong trường hợp này là "Close".
<button aria-label="Close">
<svg
aria-hidden="true"
focusable="false"
width="17"
height="17"
xmlns="http://www.w3.org/2000/svg">
<path
d="m.967 14.217 5.8-5.906-5.765-5.89L3.094.26l5.783 5.888L14.66.26l2.092 2.162-5.766 5.889 5.801 5.906-2.092 2.162-5.818-5.924-5.818 5.924-2.092-2.162Z"
fill="black" />
</svg>
</button>
document.querySelector("button").addEventListener("click", () => {
myDialog.close();
});
Note:
aria-label được dùng để đặt tên cho các phần tử mà vai trò ngầm định hoặc tường minh không cấm việc đặt tên. Nên ưu tiên dùng aria-labelledby thay cho aria-label nếu có một nhãn hiển thị cho phần tử để tham chiếu và lấy tên từ đó.
Hầu hết nội dung đều có tên truy cập được tạo từ văn bản của phần tử bao bọc trực tiếp nó. Tên truy cập cũng có thể được tạo bởi một số thuộc tính hoặc các phần tử liên kết.
Theo mặc định, tên truy cập của nút là nội dung nằm giữa thẻ mở và thẻ đóng <button>, tên truy cập của ảnh là nội dung của thuộc tính alt, và tên truy cập của input biểu mẫu là nội dung của phần tử <label> liên kết.
Nếu không có tùy chọn nào ở trên, hoặc nếu tên truy cập mặc định không phù hợp, hãy dùng thuộc tính aria-label để định nghĩa tên truy cập cho phần tử.
Note:
Mặc dù aria-label có thể được dùng trên mọi phần tử có thể có tên truy cập, trong thực tế nó chỉ được hỗ trợ trên các phần tử tương tác, widget, landmark, ảnh và iframe.
Khi dùng aria-label, bạn cũng cần cân nhắc aria-labelledby:
aria-labelcó thể dùng trong các trường hợp văn bản có thể gán nhãn cho phần tử không hiển thị. Nếu có văn bản hiển thị dùng để gán nhãn cho một phần tử, hãy dùngaria-labelledbythay thế.- Mục đích của
aria-labelgiống vớiaria-labelledby. Cả hai đều cung cấp tên truy cập cho một phần tử. Nếu không có tên hiển thị nào cho phần tử mà bạn có thể tham chiếu, hãy dùngaria-labelđể cung cấp cho người dùng một tên truy cập dễ nhận biết. Nếu văn bản nhãn có sẵn trong DOM và có thể tham chiếu nó để có trải nghiệm người dùng chấp nhận được, hãy ưu tiên dùngaria-labelledby. Đừng dùng cả hai trên cùng một phần tử vìaria-labelledbysẽ được ưu tiên hơnaria-labelnếu cả hai đều được áp dụng.
Hãy ghi nhớ thêm các hướng dẫn sau khi dùng aria-label:
-
Thuộc tính
aria-labelcó thể dùng với các phần tử HTML ngữ nghĩa thông thường; nó không bị giới hạn ở các phần tử đã được gán một vai trò ARIA. -
Đừng lạm dụng
aria-label. Hãy nhớ rằng nó chủ yếu dành cho công nghệ trợ năng. Để cung cấp hướng dẫn bổ sung hoặc làm rõ giao diện, hãy dùng văn bản hiển thị vớiaria-describedbyhoặcaria-description, không phảiaria-label. Hướng dẫn nên sẵn có cho mọi người dùng, chứ không chỉ những người dùng trình đọc màn hình. Hoặc tốt hơn nữa, hãy làm giao diện trực quan hơn.Note: Vì nội dung
aria-labelkhông hiển thị ra ngoài các công nghệ trợ năng, hãy cân nhắc làm cho thông tin quan trọng hiển thị với mọi người dùng. -
Không phải mọi phần tử đều có thể được gán tên truy cập. Không nên dùng
aria-labelhoặcaria-labelledbyvới các vai trò cấu trúc nội tuyến nhưcode,term, vàemphasis, cũng như các vai trò không được ánh xạ tới API trợ năng, bao gồmnone. Thuộc tínharia-labelđược dùng cho các phần tử như liên kết, video, điều khiển biểu mẫu, và các phần tử có vai trò landmark hoặc vai trò widget;aria-labelcung cấp tên truy cập khi không có nhãn hiển thị nào trong DOM. -
Nếu bạn gán
titlecho một<iframe>, định nghĩa thuộc tínhaltcho một<img>, hoặc thêm<label>cho một<input>, thìaria-labellà không cần thiết. Tuy nhiên, nếu thuộc tínharia-labelhiện diện, nó sẽ được ưu tiên hơntitlecủa iframe,altcủa ảnh, hoặc văn bản<label>của input như tên truy cập của phần tử đó.
Giá trị
<string>-
Một chuỗi văn bản sẽ là tên truy cập của đối tượng.
Giao diện liên quan
Element.ariaLabel-
Thuộc tính
ariaLabel, thuộc giao diệnElement, phản ánh giá trị của thuộc tínharia-label. ElementInternals.ariaLabel-
Thuộc tính
ariaLabel, thuộc giao diệnElementInternals, phản ánh giá trị của thuộc tínharia-label.
Vai trò liên quan
Được dùng trong hầu hết các vai trò trừ những vai trò mà tác giả không thể cung cấp tên truy cập.
Thuộc tính aria-label KHÔNG được hỗ trợ trong:
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| Accessible Rich Internet Applications (WAI-ARIA)> # aria-label> |
Xem thêm
<label>elementaria-descriptionaria-labelledby- Using HTML landmark roles to improve accessibility on MDN blog (2023)