Стандарти · ARIA

Свойство Състояние на контрола

aria-posinset

Позиция на елемент в набор, когато DOM не може да я изрази — обикновено защото елементите са виртуализирани, разпределени по страници или филтрирани. Винаги трябва да се комбинира с aria-setsize, така че екранните четци да могат да обявят „3 от 47“.

Кога да се използва

Когато DOM не съдържа пълния набор — виртуализирани списъци, рендиращи само видими елементи, таблици с пагинация, комбинирани кутии с филтриране, безкрайно превъртащи се потоци. Без aria-posinset и aria-setsize екранният четец трябва да предполага позицията от броя на наследниците и ще обяви „елемент 1 от 10”, когато в действителност потребителят е на елемент 327 от 5 000.

Валиден за елементи вътре в контейнери, които са по своята природа наборни: option в listbox, menuitem в menu, treeitem в tree, tab в tablist, article в feed, row в grid.

Ако DOM естествено включва всички елементи в изходен ред, aria-posinset не е необходим; помощните технологии броят наследниците автоматично.

Как се държи

Стойността е положително цяло число — индексът с база 1 на елемента в пълния набор. Трябва да се комбинира с aria-setsize на същия елемент; и двата атрибута принадлежат на самите елементи, не на контейнера.

При филтриране на елементи и двата атрибута трябва да се актуализират, за да отразяват видимия и релевантен набор, а не оригиналния пълен списък. В противен случай потребителите чуват позиции, които не съответстват на това, до което могат да навигират.

aria-setsize="-1" е валиден за случаи, когато общият брой е наистина неизвестен (отворен поток с търсене в реално време). Някои помощни технологии обявяват това като „много”; други не казват нищо.

Чести грешки

  • Задаване на aria-posinset без aria-setsize. Половината информация липсва; помощните технологии не могат да кажат „3 от колко”.
  • Пропускане на актуализация на стойностите след сортиране или филтриране. Потребителите чуват остарели позиции.
  • Поставяне на атрибутите върху контейнера вместо върху елементите.
  • Използване на aria-posinset, когато DOM вече отразява пълния набор — помощните технологии щяха да броят правилно, а сега съществуват два източника на истина, които могат да се разминат.
  • Нулеви или отрицателни стойности за aria-posinset (отрицателните не са разрешени; само aria-setsize приема -1).
  • Номера на позиции, несъответстващи на визуалния ред — потребител на екранен четец чува „елемент 5”, докато е маркиран третият видим елемент.

Пример

<!-- Виртуализиран listbox: само елементи 12-16 са в DOM, но наборът съдържа 5000 елемента -->
<div role="listbox" aria-label="Customers">
  <div role="option" aria-posinset="12" aria-setsize="5000">Customer 12</div>
  <div role="option" aria-posinset="13" aria-setsize="5000">Customer 13</div>
  <div role="option" aria-posinset="14" aria-setsize="5000" aria-selected="true">Customer 14</div>
  <div role="option" aria-posinset="15" aria-setsize="5000">Customer 15</div>
  <div role="option" aria-posinset="16" aria-setsize="5000">Customer 16</div>
</div>