Skip to main content
Validação HTML

Valor inválido “section” para o atributo “role” no elemento “section”.

Sobre este problema HTML

O valor section não existe na especificação WAI-ARIA. ARIA define um conjunto específico de valores de papel, e section não está entre eles. Isto é provavelmente uma confusão entre o nome do elemento HTML <section> e o papel ARIA region, que é o papel para o qual o elemento <section> mapeia implicitamente. Como section não é um papel reconhecido, o validador rejeita-o como um valor inválido.

Isto é importante por várias razões. Primeiro, tecnologias assistivas como leitores de ecrã dependem dos papéis ARIA para comunicar o propósito dos elementos aos utilizadores. Um valor de papel não reconhecido pode ser completamente ignorado ou causar comportamentos inesperados, degradando a experiência para utilizadores que dependem dessas ferramentas. Segundo, o elemento <section> já carrega semânticas nativas equivalentes a role="region" (quando tem um nome acessível), portanto adicionar um papel redundante ou incorreto não proporciona nenhum benefício e introduz problemas potenciais.

De acordo com a especificação ARIA in HTML, você deve geralmente evitar definir um role em elementos que já têm semânticas nativas apropriadas. O papel implícito do elemento <section> é region, portanto adicionar explicitamente role="region" é redundante na maioria dos casos. A correção mais simples e melhor é remover completamente o atributo role e deixar que as semânticas HTML nativas façam o seu trabalho.

Se você precisar substituir o papel de um elemento para um padrão de design específico (por exemplo, transformar uma <section> num marco de navegação), use um papel ARIA válido da especificação WAI-ARIA.

Exemplos

Incorreto: usar o papel inválido section

<section role="section">
  <h2>Sobre Nós</h2>
  <p>Saiba mais sobre a nossa equipa.</p>
</section>

Isto desencadeia o erro de validação porque section não é um valor de papel ARIA válido.

Correto: remover o atributo role

<section>
  <h2>Sobre Nós</h2>
  <p>Saiba mais sobre a nossa equipa.</p>
</section>

O elemento <section> já fornece as semânticas corretas. Nenhum atributo role é necessário.

Correto: usar um papel ARIA válido se necessário

Se você tem uma razão específica para atribuir um papel, use um válido. Por exemplo, se uma <section> está a ser usada como um marco de navegação:

<section role="navigation" aria-label="Navegação principal">
  <ul>
    <li><a href="/">Início</a></li>
    <li><a href="/about">Sobre</a></li>
  </ul>
</section>

Na prática, você usaria tipicamente um elemento <nav>, que tem o papel navigation nativamente. Este exemplo simplesmente ilustra que se você aplicar um role, deve ser um valor de papel ARIA válido.

Correto: papel explícito region com um nome acessível

Se você quiser marcar explicitamente uma secção como um marco de região nomeada, pode usar role="region" juntamente com um nome acessível. No entanto, isto é redundante quando usa <section> com aria-label ou aria-labelledby, uma vez que o navegador já a mapeia para region:

<!-- Preferido: as semânticas nativas tratam do papel -->

<section aria-labelledby="features-heading">
  <h2 id="features-heading">Funcionalidades</h2>
  <p>Explore as funcionalidades do nosso produto.</p>
</section>

<!-- Também válido mas redundante -->

<section role="region" aria-labelledby="features-heading">
  <h2 id="features-heading">Funcionalidades</h2>
  <p>Explore as funcionalidades do nosso produto.</p>
</section>

Ambos são HTML válido, mas a primeira abordagem é mais limpa e segue o princípio de depender das semânticas nativas sempre que possível.

Encontre problemas como este automaticamente

O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

Pronto para validar os seus sites?
Comece o seu teste gratuito hoje.