роль=презентация на H1

Используя следующий HTML

<!DOCTYPE html>
<html>
<head><title>Headings</title></head>
<body>
<main>
    <h1>Heading 1</h1>
    <section>
        <h2>Heading 2</h2>

        <h1 role="presentation">Not Heading 1</h1>
    </section>
</main>
</body>
</html>

ChromeVOX объявляет «Не заголовок 1» как заголовок 1

validator.w3.org Предупреждения: Предупреждение: рассмотрите возможность использования элемента h1 только в качестве заголовка верхнего уровня (все элементы h1 обрабатываются многими программами чтения с экрана и другими инструментами как заголовки верхнего уровня).

Из того, что я узнал из http://www.w3.org/TR/aria-in-html/#presentation

Я думал, что role="presentation" удалит семантическое значение из элемента h1.

Это правильное ожидание от ChromeVox и validator.w3.org?


person wanttolearn    schedule 05.08.2015    source источник
comment
Может быть, валидатор предупреждает об этом, потому что ChromeVox игнорирует атрибут роли? Это не ошибка, поэтому это не говорит о том, что ваш код совершенно неверен, но говорит о необходимости пересмотреть его из-за поведения инструментов, которые его рассматривают. Предупреждение могло бы быть более ясным, что проблема связана с инструментом, а не с вашим кодом, но в документации говорится, что валидатор находится в стадии разработки.   -  person BSMP    schedule 06.08.2015


Ответы (1)


Для элементов без обязательных дочерних элементов (таких как h1, h2 и т. д.) любые элементы, вложенные в элемент с role=presentation, сохраняют свою семантику.

Однако для элементов с обязательными дочерними элементами (например, ul или table) любые обязательные дочерние элементы, вложенные в элемент с role=presentation, также имеют свою семантику удаление.

person eyadMhanna    schedule 05.08.2015
comment
Да, пример для этого с w3.org/TR/aria-in- html/#presentation показывает вложенный abbr, который сохраняет семантику. h1 не сохраняет семантику. - person wanttolearn; 06.08.2015