Хотя это старая версия, я обновляю ее для тех, кто может найти этот вопрос при поиске позже.
@ Мэтт Келлихер:
Использование css : before и атрибута data- * для списка - отличная идея, но его можно немного изменить, чтобы сделать его более доступным:
HTML:
<ul aria-label="Vehicle Models Available:">
<li>Dodge Shadow</li>
<li>Ford Focus</li>
<li>Chevy Lumina</li>
</ul>
CSS:
ul:before{
content:attr(aria-label);
font-size:120%;
font-weight:bold;
margin-left:-15px;
}
Это создаст список с псевдоэлементом "header" над ним с текстом, установленным в значение атрибута aria-label. Вы можете легко настроить его под свои нужды.
Преимущество этого по сравнению с использованием атрибута data- * заключается в том, что aria-label будет считываться программами чтения с экрана как «метка» для списка, что семантически правильно для предполагаемого использования этих данных.
Примечание: IE8 поддерживает: before атрибуты, но должен использовать версию с одним двоеточием (и должен иметь действительный определенный тип документа). IE7 не поддерживает: раньше, но Modernizer или Selectivizr должны решить эту проблему для вас. Все современные браузеры поддерживают синтаксис old: before, но предпочитают использовать синтаксис :: before. Как правило, лучший способ справиться с этим - иметь внешнюю таблицу стилей для IE7 / 8, которая использует старый формат, и общую таблицу стилей, использующую новый формат, но на практике большинство просто использует старый формат с одиночной двоеточием, так как он все еще на 100% пересекается браузер, даже если он технически недействителен для CSS3.