Critérios de Sucesso WCAG · Level A
WCAG 2.4.1: Ignorar Blocos
- Explicar brevemente o objetivo do requisito mencionado - Manter o tom técnico e informativo do texto original - Preservar todos os números, níveis WCAG e termos técnicos - Manter a estrutura de frases e parágrafos o mais próxima possível - Verificar se o significado e o nível de formalidade foram mantidos A WCAG 2.4.1 exige que as páginas da web forneçam um mecanismo para pular blocos repetidos de conteúdo, como menus de navegação, para que usuários de teclado e de tecnologias assistivas possam alcançar o conteúdo principal sem precisar percorrer com a tecla Tab todos os links. Este é um requisito de Nível A, o que significa que é a base para uma navegação acessível por teclado.
O Que Esta Regra Significa
WCAG 2.4.1 Bypass Blocks estabelece: "A mechanism is available to bypass blocks of content that are repeated on multiple Web pages." Em termos práticos, isso significa que qualquer conjunto de links, menus de navegação, banners ou outros blocos de conteúdo que apareçam de forma consistente em várias páginas deve oferecer uma forma de o usuário ignorá-los e ir diretamente para o conteúdo exclusivo da página atual.
A implementação mais amplamente reconhecida é um link de pular navegação — um elemento âncora colocado como o primeiro item focalizável na página, que aponta para a área de conteúdo principal por meio de um identificador de fragmento como #main-content. No entanto, as WCAG também aceitam outros mecanismos de bypass, incluindo regiões de marco (landmark) devidamente estruturadas (como os elementos HTML5 <main>, <nav> e <header> ou seus equivalentes ARIA) e estruturas de títulos que permitam a usuários de leitores de tela saltar entre seções.
Uma página atende a este critério quando pelo menos uma das seguintes condições é verdadeira: existe um link de pular navegação funcional; a página usa elementos de marco HTML5 significativos que as tecnologias assistivas expõem para navegação rápida; ou um atalho de teclado equivalente ou mecanismo de navegação dentro da página permite que usuários ignorem blocos repetidos. O link de pular pode estar visualmente oculto por padrão, mas deve se tornar visível quando recebe foco pelo teclado, e deve de fato mover o foco do teclado para o alvo quando ativado — não apenas rolar a janela de visualização.
Uma página não atende a este critério quando: não há link de pular, nenhuma estrutura de marcos e nenhum outro mecanismo; existe um link de pular, mas ele está permanentemente oculto via display:none ou visibility:hidden (tornando-o não focalizável); o alvo da âncora do link de pular não existe no DOM; ou o link está presente, mas não move o foco, deixando usuários de teclado ainda obrigados a percorrer com Tab todos os itens de navegação. As WCAG reconhecem uma exceção para páginas em que não há bloco repetido — por exemplo, um documento de página única sem cabeçalho de navegação — mas essa exceção é restrita e raramente se aplica a sites do mundo real.
Por Que Isso Importa
Este critério afeta diretamente vários grupos de usuários. Usuários que utilizam apenas o teclado — incluindo pessoas com deficiências motoras como lesão por esforço repetitivo, paralisia ou tremor — navegam inteiramente pressionando Tab para se mover entre elementos interativos. Sem um mecanismo de bypass, eles precisam pressionar Tab dezenas de vezes apenas para alcançar o primeiro conteúdo exclusivo em cada página que visitam. Uma barra de navegação típica com 10 a 20 links, multiplicada por centenas de visitas a páginas, torna-se um fardo físico e temporal significativo.
Usuários de leitores de tela que são cegos ou têm baixa visão dependem de regiões de marco e títulos para se orientar e saltar entre seções de uma página. Embora leitores de tela modernos (JAWS, NVDA, VoiceOver) ofereçam suas próprias teclas de atalho para navegar por marcos e títulos, esses atalhos só funcionam quando a página está devidamente estruturada. Uma página sem marcos e sem link de pular força a leitura linear de cada elemento desde o topo, incluindo a navegação repetida, toda vez que a página é carregada.
Considere um cenário do mundo real: uma cidadã com deficiência visual na Turquia acessando um portal de governo eletrônico para declarar o imposto de renda. O portal tem uma barra de navegação superior com 18 links, um trilho de navegação (breadcrumb) com 4 links e uma barra lateral secundária com 12 links — totalizando 34 pressionamentos de Tab antes de chegar aos campos do formulário. Sem um mecanismo de bypass, essa usuária precisa navegar por todos os 34 elementos em cada página do processo de múltiplas etapas. Um link de pular bem implementado reduz isso a um único pressionamento de tecla.
Acessibilidade cognitiva também é um fator: usuários com condições relacionadas à atenção se beneficiam de poder ir diretamente ao conteúdo relevante sem precisar processar elementos de navegação repetidos e distrativos. Além do acesso para pessoas com deficiência, regiões de marco bem estruturadas melhoram o SEO, já que rastreadores de mecanismos de busca usam a estrutura do documento para entender a hierarquia e a relevância do conteúdo. Uma arquitetura de navegação acessível e uma estrutura clara de marcos contribuem para melhor indexação e potencialmente classificações mais altas em buscas.
Regras Relacionadas do Axe-core
- bypass: Esta regra verifica se a página fornece algum mecanismo para ignorar blocos de navegação repetidos. O Axe inspeciona a página em busca da presença de um link de pular que aponte para uma âncora existente na própria página, da presença de funções de marco ARIA (
role='main',role='navigation', etc.) ou elementos de marco HTML5 (<main>,<nav>,<header>,<footer>,<aside>), e de atributos ARIAaria-labelouaria-labelledbyque tornem múltiplos marcos distinguíveis. A regra sinaliza uma violação quando nenhum desses mecanismos está presente. Observe que essa regra exige verificação manual em alguns casos — por exemplo, o axe pode detectar que um link de pular existe, mas não pode confirmar automaticamente que ele move o foco do teclado para o local correto quando ativado. - skip-link: Esta regra se concentra especificamente em links de pular e verifica se o elemento alvo referenciado pelo atributo
hrefde um link de pular (por exemplo,#main-content) realmente existe no DOM e é alcançável pelo foco do teclado. Se um link de pular aponta para um ID inexistente, ou se o elemento alvo não é focalizável (por não ter um atributotabindexquando é um elemento não interativo), a regra sinaliza uma violação. Isso captura o erro comum de adicionar um link de pular no HTML, mas esquecer de adicionar o atributoidcorrespondente ao elemento de conteúdo principal. - tabindex: Esta regra sinaliza elementos com valores de
tabindexmaiores que 0, que criam uma ordem de tabulação personalizada que se desvia da ordem natural do DOM. Emboratabindex='0'seja legítimo e necessário para tornar elementos não interativos focalizáveis (como o alvo de um link de pular em um<div>), o uso detabindex='1',tabindex='2'e assim por diante interrompe a sequência de Tab esperada em toda a página, o que pode tornar mecanismos de bypass imprevisíveis ou ineficazes. Ferramentas automatizadas podem detectar a presença de valores positivos detabindex, mas um testador humano deve verificar se a ordem de tabulação resultante faz sentido lógico e se o link de pular permanece o primeiro elemento focalizável na sequência.
Como Testar
- Varredura automatizada: Execute o axe DevTools (extensão de navegador) ou o Lighthouse (Chrome DevTools > Lighthouse > Accessibility) na página. Procure especificamente por violações nas regras
bypass,skip-linketabindex. No axe DevTools, filtre os resultados por esses IDs de regra. No Lighthouse, verifique a seção "Navigation" da auditoria de acessibilidade. Observe quaisquer itens "Needs Review" — o axe marca alguns testes de bypass como exigindo confirmação manual. - Teste de teclado (todos os navegadores): Abra a página em um navegador sem leitor de tela ativo. Pressione Tab uma vez. Confirme que o primeiro elemento focado é um link de pular (ele pode aparecer visualmente neste momento se antes estava fora da tela). Pressione Enter para ativar o link de pular. Confirme que o foco do teclado foi movido para a área de conteúdo principal — o próximo pressionamento de Tab deve alcançar o primeiro elemento interativo dentro do conteúdo principal, não o primeiro link de navegação. Se o foco não se mover, o link de pular está quebrado.
- NVDA + Firefox: Inicie o NVDA e abra a página no Firefox. Pressione o atalho Insert+F7 para abrir a Lista de Elementos e verificar os marcos. Alternativamente, pressione D para saltar entre regiões de marco e confirme que um marco
mainestá presente e claramente rotulado. Pressione H para navegar por títulos e verifique se a estrutura de títulos torna as seções da página identificáveis. Use Tab para chegar ao link de pular e ative-o com Enter, depois confirme que o NVDA anuncia conteúdo de dentro da região principal. - VoiceOver + Safari (macOS/iOS): Ative o VoiceOver (Command+F5 no Mac). Use o Rotor (Control+Option+U) para abrir o menu de Landmarks e verifique se regiões de marco nomeadas aparecem. Use Tab para chegar ao link de pular e pressione Enter; confirme que o VoiceOver lê o conteúdo da área principal imediatamente após a ativação. No iOS, use o gesto do Rotor para alternar para Landmarks e deslize por elas.
- JAWS + Chrome: Com o JAWS ativo, pressione Q para ir diretamente ao marco de conteúdo principal. Verifique se o JAWS anuncia a entrada na região principal. Use Insert+F3 para listar marcos e confirmar rótulos apropriados. Use Tab a partir do início da página e verifique se o link de pular é anunciado primeiro, com um nome acessível como "Skip to main content".
- Verificação do alvo de foco: Inspecione o valor de
hrefdo link de pular (por exemplo,#main-content). Use as ferramentas de desenvolvedor do navegador para confirmar que existe no DOM um elemento comid='main-content'. Se esse elemento for um<div>ou outro contêiner não interativo, confirme que ele temtabindex='-1'para torná-lo focalizável de forma programática sem inseri-lo na ordem de tabulação.
Como Corrigir
Link de pular ausente — Incorreto
<!-- Navigation appears first with no bypass mechanism -->
<div class='nav-wrapper'>
<a href='/home'>Home</a>
<a href='/about'>About</a>
<a href='/services'>Services</a>
<a href='/contact'>Contact</a>
</div>
<div class='content'>
<h1>Welcome</h1>
<p>Page content here.</p>
</div>
Link de pular ausente — Correto
<!-- Skip link is the first focusable element; visually hidden until focused -->
<a href='#main-content' class='skip-link'>Skip to main content</a>
<nav aria-label='Primary navigation'>
<a href='/home'>Home</a>
<a href='/about'>About</a>
<a href='/services'>Services</a>
<a href='/contact'>Contact</a>
</nav>
<!-- tabindex='-1' allows the div to receive programmatic focus without
entering the natural tab order -->
<main id='main-content' tabindex='-1'>
<h1>Welcome</h1>
<p>Page content here.</p>
</main>
Link de pular com alvo inexistente — Incorreto
<!-- The skip link exists but points to an ID that is not in the DOM -->
<a href='#content' class='skip-link'>Skip to main content</a>
<nav>...navigation links...</nav>
<!-- The id here is 'main', not 'content' — the skip link target is broken -->
<div id='main'>
<h1>Page Title</h1>
</div>
Link de pular com alvo inexistente — Correto
<!-- href value exactly matches the id of the target element -->
<a href='#main-content' class='skip-link'>Skip to main content</a>
<nav>...navigation links...</nav>
<!-- id matches the href fragment; tabindex='-1' ensures focus is received -->
<main id='main-content' tabindex='-1'>
<h1>Page Title</h1>
</main>
Link de pular permanentemente oculto — Incorreto
<!-- display:none removes the element from the accessibility tree entirely -->
<a href='#main-content' style='display:none'>Skip to main content</a>
<!-- visibility:hidden also hides from screen readers and keyboard -->
<a href='#main-content' style='visibility:hidden'>Skip to main content</a>
Link de pular permanentemente oculto — Correto
<!-- CSS moves the link off-screen visually but keeps it in the tab order.
On :focus, it becomes visible so sighted keyboard users can see it. -->
<style>
.skip-link {
position: absolute;
left: -9999px;
top: auto;
width: 1px;
height: 1px;
overflow: hidden;
}
.skip-link:focus {
position: static;
width: auto;
height: auto;
overflow: visible;
}
</style>
<a href='#main-content' class='skip-link'>Skip to main content</a>
Sem estrutura de marcos — Incorreto
<!-- Generic divs with no semantic role — screen readers cannot identify regions -->
<div class='header'>...logo and nav...</div>
<div class='sidebar'>...secondary links...</div>
<div class='page-body'>...main content...</div>
<div class='footer'>...footer links...</div>
Sem estrutura de marcos — Correto
<!-- HTML5 semantic elements expose landmark roles to assistive technologies.
Multiple nav elements are distinguished with aria-label. -->
<header>
<nav aria-label='Primary navigation'>...main nav links...</nav>
</header>
<aside aria-label='Related resources'>...secondary links...</aside>
<main id='main-content' tabindex='-1'>...main content...</main>
<footer>
<nav aria-label='Footer navigation'>...footer links...</nav>
</footer>
Erros Comuns
- Ocultar o link de pular com
display:noneouvisibility:hiddenem vez de uma técnica de CSS fora da tela, o que o remove tanto da exibição visual quanto da árvore de acessibilidade, tornando-o completamente não funcional para todos os usuários. - Adicionar um link de pular com
href='#main-content', mas omitir o atributo correspondenteid='main-content'no elemento alvo, fazendo com que o link não faça nada quando ativado. - Apontar o link de pular para um contêiner não interativo (como um
<div>ou<section>) sem adicionartabindex='-1', o que significa que os navegadores irão rolar a janela de visualização, mas não moverão o foco do teclado para o alvo. - Colocar o link de pular em qualquer lugar que não seja o primeiro elemento focalizável no DOM — por exemplo, depois do logotipo ou após o primeiro link de navegação — o que frustra seu propósito, já que os usuários ainda precisam usar Tab para passar por conteúdo até alcançá-lo.
- Usar valores positivos de
tabindex(por exemplo,tabindex='1') em qualquer lugar da página, o que reorganiza a ordem de tabulação de maneiras imprevisíveis e pode afastar o link de pular de sua posição esperada como primeiro elemento. - Incluir apenas um único elemento
<nav>sem nome quando a página tem múltiplas regiões de navegação (navegação principal, breadcrumbs, navegação no rodapé), tornando impossível para usuários de leitores de tela distingui-las usando atalhos de navegação por marcos. - Confiar apenas na estrutura de marcos sem fornecer um link de pular, partindo do pressuposto de que todos os usuários de leitores de tela conhecem e usam atalhos de marcos — usuários videntes que usam apenas o teclado e não utilizam leitores de tela não se beneficiam de marcos sozinhos e dependem de um link de pular visível.
- Envolver todo o corpo da página em um único elemento
<main>que inclui navegação, cabeçalhos e rodapés, em vez de restringir o<main>ao conteúdo exclusivo da página. - Usar
role='navigation'em um<div>contendo navegação sem fornecer umaria-labelquando existem múltiplos marcos de navegação, fazendo com que leitores de tela anunciem apenas "navigation" sem forma de diferenciar as regiões. - Implementar o link de pular corretamente em um protótipo HTML estático, mas perdê-lo durante a renderização em um framework JavaScript (por exemplo, React, Angular, Vue) porque o componente de link de pular não está incluído no layout raiz ou é removido condicionalmente durante a hidratação no lado do cliente.
Relação com os Regulamentos de Acessibilidade da Turquia
A Circular Presidencial 2025/10 da Turquia, publicada no Diário Oficial nº 32933 em 21 de junho de 2025, estabelece requisitos obrigatórios de acessibilidade web e móvel com base nos padrões de conformidade WCAG 2.1 Nível AA e WCAG 2.2 Nível A. WCAG 2.4.1 Bypass Blocks é um critério de Nível A, situando-se entre os requisitos mais fundamentais da Circular — o que significa que representa a linha de base abaixo da qual os serviços digitais de nenhuma entidade abrangida podem ficar.
A Circular abrange uma ampla gama de entidades dos setores público e privado. Instituições públicas — incluindo ministérios, prefeituras, agências estatais e órgãos vinculados ao governo — são obrigadas a alcançar conformidade total em até um ano a partir da data de vigência da Circular. Entidades do setor privado sujeitas à regulamentação têm um prazo de dois anos para conformidade. As categorias de setor privado abrangidas incluem plataformas de comércio eletrônico, bancos e instituições financeiras, hospitais e prestadores de serviços de saúde, operadoras de telecomunicações com 200.000 ou mais assinantes, agências de viagem, empresas de transporte privado e escolas privadas autorizadas pelo Ministério da Educação Nacional (MoNE).
Para essas entidades, deixar de implementar a WCAG 2.4.1 significa que seus sites estão em não conformidade com o nível mais básico do padrão. Um portal governamental, uma plataforma de banco on-line, um sistema de agendamento de hospital ou um fluxo de checkout de comércio eletrônico que não tenha um mecanismo funcional de pular navegação está em violação direta dos requisitos da Circular. Dado que a navegação por teclado é fundamental para usuários com deficiências motoras e que a usabilidade com leitores de tela depende fortemente da estrutura de marcos, este critério tem peso significativo em auditorias de acessibilidade e avaliações regulatórias.
Organizações que realizam auditorias internas de acessibilidade ou contratam avaliações de terceiros em preparação para a conformidade devem tratar a WCAG 2.4.1 como um item de primeira passagem — uma das vitórias mais fáceis de implementar e uma das mais impactantes para usuários que dependem de teclado e tecnologias assistivas. A falta de tratamento desse ponto pode ser citada especificamente em revisões regulatórias como uma não conformidade de linha de base, potencialmente afetando o status geral de conformidade da organização sob a Circular.
