Mục đích của việc sử dụng "aria-labellingby" trên các phần tử đầu vào đã được gắn nhãn?


84

Nhiều trang web trình diễn ARIA sử dụng mã như:

<label for="name" id="label-name">Your Name</label>
<input id="name" aria-labelledby="label-name" type="text">


Nhưng mục đích của việc sử dụng aria-labelledbythuộc tính trong trường hợp này là gì? Phần inputtử đã được gắn nhãn bởi labelphần tử đang sử dụng forthuộc tính, phải không?



8
Cảm ơn @Sarfraz. Tuy nhiên, trang đó không minh họa mục đích của việc sử dụng như vậy trên các phần tử đầu vào đã được gắn nhãn.
Ian Y.

Câu trả lời:


69

Có một số ví dụ điển hình về việc sử dụng nó tại các trang Nhà phát triển Mozilla . Có lẽ ví dụ tốt nhất của họ là nơi nó được sử dụng để liên kết menu bật lên với mục menu chính - đó là Ví dụ 7 trong trang:

<div role="menubar">  
    <div role="menuitem" aria-haspopup="true" id="fileMenu">File</div>  
    <div role="menu" aria-labelledby="fileMenu">  
        <div role="menuitem">Open</div>  
        <div role="menuitem">Save</div>  
       <div role="menuitem">Save as ...</div>  
       ...  
    </div>  
    ...  

Thuộc tính ARIA có xu hướng được sử dụng nhiều nhất trong việc xây dựng Ứng dụng Internet phong phú có thể truy cập : miễn là bạn đang gắn bó với HTML ngữ nghĩa tiêu chuẩn - sử dụng các biểu mẫu có nhãn tiêu chuẩn - bạn hoàn toàn không cần nó: vì vậy không có lý do gì để sử dụng nó trên một cặp LABEL / INPUT. Nhưng nếu bạn đang xây dựng "giao diện người dùng phong phú" từ đầu (DIV và các phần tử cấp thấp khác với javascript bổ sung tính tương tác), thì điều cần thiết là cho người đọc màn hình biết mục đích cấp cao hơn là gì.


11
Cảm ơn @BrendanMcK. Những gì bạn nói là sự thật. Tôi đã hỏi một người làm việc cho ARIA và anh ta cũng nói rằng không cần sử dụng aria-labellingby trong trường hợp này. Đối với việc gắn nhãn cho các <input>, anh ấy nói chỉ sử dụng nó khi chúng ta cần gắn nhãn một <input> với nhiều <label>. Dưới đây là một ví dụ ông cung cấp: html5accessibility.com/tests/mulitple-labels.html
Ian Y.

1
Nhiều LABEL có thể được liên kết với cùng một điều khiển bằng cách tạo nhiều tham chiếu thông qua thuộc tính for . Ok, WAVE / WebAIM không thích nó, và hóa ra có vấn đề với hỗ trợ UA . Nhưng đề xuất của anh ấy thật kỳ lạ , và tôi không nghĩ nó có lợi thế thực sự nào. Ít nhất IE <= 8 không hỗ trợ nhiều ID trong aria-labellingby .
sourcejedi

1
liên kết này PHẢI được ở đây: developer.mozilla.org/en-US/docs/Accessibility/ARIA
Facundo Colombier

5

Luôn có các vấn đề hỗ trợ UA với bất kỳ điều gì mới, đó là lý do tại sao các nhà phát triển tìm đến cải tiến liên tục. Kỹ thuật ARIA này cung cấp khả năng loại bỏ thuộc tính “for” và cho phép các phần tử khác trở thành một phần của biểu mẫu phong phú. Những kỹ thuật này sẽ trở thành thông lệ.


1
Nó có tập trung phần tử khi được nhấp vào giống như thuộc tính for không? Tôi đoán là không
Dominic

3
Hoàn toàn sai sự thật. Thuộc tính aria KHÔNG phải thay thế các thuộc tính khác vì mục đích duy nhất của chúng là giúp làm cho các phần tử dễ tiếp cận hơn. Các phần tử KHÔNG được lấy nét vì bất kỳ thuộc tính aria nào.
Gust van de Wal

1
Thực tế phổ biến (đáng buồn là?) Hiện tại vẫn không đúng theo quan điểm của tôi. Thực hành tốt nhất, có thể là một lựa chọn tốt hơn. Có lẽ trong tương lai, khi đó là thực tế phổ biến mà rất tiên tiến AI viết html thay vì con người :)
Michael
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.