0Pricing
CSS Academy · Aula

Componente de abas com :checked versus JS

Implemente uma interface de abas usando a técnica CSS :checked e compare-a com uma abordagem em JavaScript.

Componente de abas com :checked versus JS é uma aula grátis de CSS Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de CSS Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de CSS Academy inclui 4 aulas no total.

Requisitos do componente de abas

Um componente de abas precisa de: um indicador visual da aba ativa, um painel associado exibido ou ocultado ao selecionar, navegação por teclado entre as abas e atributos ARIA acessíveis. Isso pode ser obtido somente com CSS usando o truque de :checked ou com JavaScript para oferecer melhor acessibilidade.

O truque de :checked

Entradas de rádio ocultas funcionam como estado: cada aba é um <label> vinculado a uma entrada de rádio. Quando um rádio é marcado, os combinadores de irmãos do CSS exibem o painel correspondente e estilizam o rótulo da aba ativa. Nenhum JavaScript é necessário.

<div class="tabs">
  <input type="radio" name="tabs" id="tab-1" checked hidden />
  <label for="tab-1">Tab One</label>
  <div id="panel-1">Panel one content</div>
</div>

Arquitetura CSS de :checked

Coloque as entradas de rádio, depois todos os rótulos (abas) e, por fim, todos os painéis no mesmo contêiner. Use o combinador geral de irmãos (~) para conectar um rádio marcado ao painel correspondente. Por padrão, os painéis recebem display: none; o painel correspondente recebe display: block.

Limitações da abordagem :checked

O truque de :checked não consegue atualizar atributos ARIA (aria-selected, aria-controls), não permite ativar a navegação por teclas de seta entre as abas, e as restrições da ordem no DOM (entradas antes dos painéis) podem entrar em conflito com os requisitos do design visual. Essas lacunas limitam a acessibilidade real.

Componente de abas em JS

Um componente de abas em JS escuta eventos de clique nos botões das abas, define aria-selected na aba ativa, atualiza aria-hidden nos painéis e gerencia o foco. Essa abordagem permite conformidade completa com ARIA e padrões de interação por teclado conforme as Práticas de autoria ARIA.

Papéis ARIA para abas

Use role="tablist" no contêiner, role="tab" em cada botão de aba com aria-selected e aria-controls, e role="tabpanel" em cada painel com aria-labelledby. Os leitores de tela anunciam a quantidade de abas, a posição e o estado selecionado.

Padrão de interação por teclado

Práticas de autoria ARIA para abas: a tecla Tab entra na lista de abas e coloca o foco na aba ativa. As setas Esquerda/Direita movem-se entre as abas. Início/Fim levam à primeira ou à última aba. Cada movimento com as teclas de seta ativa a aba em foco (padrão de ativação automática).

CSS para o estado ativo

Estilize a aba ativa com uma borda inferior ou uma alteração no plano de fundo usando o seletor [aria-selected="true"] — funciona tanto com as abordagens com JS quanto com :checked. Isso mantém o CSS sincronizado com o atributo de estado ARIA, evitando o gerenciamento de dois estados.

<div role="tablist">
  <button role="tab" aria-selected="true">Overview</button>
  <button role="tab" aria-selected="false">Details</button>
</div>

Indicador animado

Um indicador de aba animado desliza entre as abas: posicione um elemento indicador com posicionamento absoluto, use JavaScript para definir sua posição à esquerda e sua largura de acordo com as dimensões da aba ativa e anime-o com transition: left 200ms ease, width 200ms ease.

Excesso de abas responsivo

Quando as abas ultrapassarem os limites do contêiner em telas pequenas, use rolagem horizontal (overflow-x: auto; scrollbar-width: none) ou recolha-as em um menu suspenso de seleção em dispositivos móveis. A abordagem com seleção exige JS para sincronizar o elemento de seleção nativo com a visibilidade do painel da aba.

Somente CSS ou JavaScript: quando usar cada opção

Use a técnica de :checked para interfaces simples e não críticas, nas quais a acessibilidade não seja uma restrição prioritária. Use abas com JavaScript para qualquer interface de produção voltada a usuários de teclado, usuários de leitores de tela ou aplicações que exijam conformidade com ARIA em auditorias ou requisitos legais.

Verificação de conhecimento

Qual é a principal limitação de acessibilidade da técnica de :checked para abas?

Resumo

A técnica de :checked permite alternar abas usando somente CSS, com entradas de opção e combinadores de irmãos, mas não oferece acessibilidade por ARIA nem pelo teclado. Abas com JavaScript e funções ARIA (tablist, tab, tabpanel), gerenciamento de aria-selected e tratamento das teclas de seta oferecem a experiência completa e acessível necessária para componentes de produção.

Perguntas Frequentes

A aula “Componente de abas com :checked versus JS” é grátis?

Sim — o texto completo de “Componente de abas com :checked versus JS” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de CSS Academy, atualize para CoddyKit PRO. O curso de CSS Academy inclui 4 aulas no total.

O que vou aprender em “Componente de abas com :checked versus JS”?

Implemente uma interface de abas usando a técnica CSS :checked e compare-a com uma abordagem em JavaScript. Você pratica CSS Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar CSS Academy?

Nenhuma experiência prévia é necessária. CSS Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Componente de abas com :checked versus JS”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de CSS Academy?

Sim. Cada aula de CSS Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Componente de cartão com propriedades personalizadas de CSS
  2. Estilização de modais e diálogos
  3. Padrões de menus suspensos e popovers
  4. Componente de abas com :checked versus JS
← Voltar para CSS Academy