0Pricing
CSS Academy · Lección

Componente de pestañas con el hack :checked frente a JS

Implemente una interfaz de pestañas mediante la técnica CSS :checked y compárela con un enfoque en JavaScript.

Componente de pestañas con el hack :checked frente a JS es una lección gratuita de CSS Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de CSS Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de CSS Academy incluye 4 lecciones en total.

Requisitos de un componente de pestañas

Un componente de pestañas necesita: un indicador visual de la pestaña activa, un panel asociado que se muestre u oculte al seleccionarla, navegación con el teclado entre pestañas y atributos ARIA accesibles. Todo esto puede lograrse únicamente con CSS mediante el truco de :checked o con JavaScript para obtener una mejor accesibilidad.

El truco de :checked

Los inputs radio ocultos actúan como estado: cada pestaña es un <label> vinculado a un input radio. Cuando un radio está marcado, los combinadores de hermanos de CSS muestran el panel correspondiente y aplican estilos a la etiqueta de la pestaña activa. No se necesita JavaScript.

<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>

Arquitectura CSS de :checked

Coloque primero los inputs radio, después todas las etiquetas (pestañas) y, a continuación, todos los paneles dentro del mismo contenedor. Use el combinador de hermanos generales (~) para conectar un radio marcado con su panel correspondiente. Los paneles tienen display: none por defecto; el panel coincidente obtiene display: block.

Limitaciones del enfoque :checked

El truco de :checked no puede actualizar los atributos ARIA (aria-selected, aria-controls), no puede habilitar la navegación con las teclas de flecha entre pestañas y las restricciones del orden del DOM (los inputs deben ir antes que los paneles) pueden entrar en conflicto con los requisitos del diseño visual. Estas carencias limitan la accesibilidad real.

Componente de pestañas con JavaScript

Un componente de pestañas en JS escucha los eventos de clic en los botones de las pestañas, establece aria-selected en la pestaña activa, actualiza aria-hidden en los paneles y gestiona el foco. Este enfoque permite cumplir completamente con ARIA y aplicar los patrones de interacción con el teclado definidos en ARIA Authoring Practices.

Roles ARIA para pestañas

Use role="tablist" en el contenedor, role="tab" en cada botón de pestaña junto con aria-selected y aria-controls, y role="tabpanel" en cada panel junto con aria-labelledby. Los lectores de pantalla anuncian el número de pestañas, la posición y el estado de selección.

Patrón de interacción con el teclado

ARIA Authoring Practices para pestañas: la tecla Tab entra en la lista de pestañas y enfoca la pestaña activa. Las flechas izquierda y derecha permiten desplazarse entre pestañas. Home y End saltan a la primera y última pestaña. Cada movimiento con las teclas de flecha activa la pestaña enfocada (patrón de activación automática).

CSS para el estado activo

Aplique estilos a la pestaña activa con un borde inferior o un cambio de fondo mediante el selector [aria-selected="true"]; funciona tanto con el enfoque basado en JS como con el enfoque basado en :checked. Así, CSS permanece sincronizado con el atributo de estado ARIA y se evita gestionar dos estados distintos.

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

Indicador animado

Un indicador de pestaña animado se desliza entre las pestañas: coloque un elemento indicador con posicionamiento absoluto, use JavaScript para establecer sus valores de left y width de acuerdo con las dimensiones de la pestaña activa y anímelo con transition: left 200ms ease, width 200ms ease.

Desbordamiento adaptable de pestañas

Cuando las pestañas desbordan su contenedor en pantallas pequeñas, use desplazamiento horizontal (overflow-x: auto; scrollbar-width: none) o conviértalas en un menú desplegable select en dispositivos móviles. El enfoque con select requiere JavaScript para sincronizar el select nativo con la visibilidad del panel de pestañas.

CSS sin JavaScript frente a JavaScript: cuándo usar cada opción

Use el truco de :checked para interfaces sencillas y no críticas en las que la accesibilidad no sea un requisito prioritario. Use pestañas con JavaScript en cualquier interfaz de producción destinada a usuarios de teclado, usuarios de lectores de pantalla o aplicaciones que requieran cumplimiento de ARIA en auditorías o por requisitos legales.

Comprobación de conocimientos

¿Cuál es la principal limitación de accesibilidad del truco CSS :checked para las pestañas?

Resumen

El truco de :checked permite cambiar de pestaña usando únicamente CSS, mediante botones de opción y combinadores de hermanos, pero carece de accesibilidad para ARIA y el teclado. Las pestañas con JavaScript y roles ARIA (tablist, tab, tabpanel), gestión de aria-selected y control de las teclas de flecha proporcionan la experiencia completa y accesible necesaria para componentes de producción.

Preguntas frecuentes

¿La lección «Componente de pestañas con el hack :checked frente a JS» es gratis?

Sí — el texto completo de «Componente de pestañas con el hack :checked frente a JS» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de CSS Academy, actualiza a CoddyKit PRO. El curso de CSS Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Componente de pestañas con el hack :checked frente a JS»?

Implemente una interfaz de pestañas mediante la técnica CSS :checked y compárela con un enfoque en JavaScript. Practicas CSS Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar CSS Academy?

No se requiere experiencia previa. CSS Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Componente de pestañas con el hack :checked frente a JS»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de CSS Academy?

Sí. Cada lección de CSS Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Componente de tarjeta con propiedades personalizadas de CSS
  2. Estilos de modales y diálogos
  3. Patrones de dropdown y popover
  4. Componente de pestañas con el hack :checked frente a JS
← Volver a CSS Academy