Documentación y ejemplos sobre cómo usar los componentes de navegación incluidos en Bootstrap.
Navegación base del componente
La navegación disponible en Bootstrap comparte marcas y estilos generales, desde la clase base .nav hasta los estados activo y deshabilitado. Intercambia clases de modificadores para cambiar entre cada estilo.
El componente base .nav está construido con flexbox y proporciona una base sólida para construir todo tipo de componentes de navegación. Incluye algunas sobrescrituras de estilo (para trabajar con listas), algo de relleno de enlaces para áreas de visita más grandes y un estilo básico deshabilitado.
Las clases se utilizan en todo momento, por lo que tu marcado puede ser súper flexible. Utiliza <ul> como arriba, <ol> si el orden de tus items es importante, o crea el tuyo propio con un elemento <nav>. Debido a que .nav usa display: flex, los enlaces de navegación se comportan igual que los elementos de navegación, pero sin el marcado adicional.
Estilos disponibles para el componente
Cambiar el estilo del componente .nav con modificadores y utilidades. Mezcla y combina según sea necesario o crea el tuyo propio.
Alineación horizontal
Cambia la alineación horizontal de tu navegación con utilidades flexbox. De forma predeterminada, los navegadores están alineados a la izquierda, pero puedes cambiarlos fácilmente al centro o a la derecha.
Centrado con .justify-content-center:
Alineado a la derecha con .justify-content-end:
Vertical
Apila tu navegación cambiando la dirección del elemento flexible con la utilidad .flex-column. ¿Necesitas apilarlos en algunas viewports pero no en otras? Utiliza las versiones responsive (por ejemplo, .flex-sm-column).
Como siempre, la navegación vertical también es posible sin <ul>s.
Pestañas
Toma la navegación básica de arriba y agrega la clase .nav-tabs para generar una interfaz con pestañas. Utilízalos para crear regiones con pestañas con nuestro complemento JavaScript para pestañas.
Pastillas
Toma el mismo HTML, pero usa .nav-pills en su lugar:
Subrayado
Toma el mismo HTML, pero usa .nav-underline en su lugar:
Completar y justificar
Fuerza el contenido de tu .nav a extender todo el ancho disponible con una de dos clases de modificador. Para llenar proporcionalmente todo el espacio disponible con tus .nav-item, utiliza .nav-fill. Observa que todo el espacio horizontal está ocupado, pero no todos los elementos de navegación tienen el mismo ancho.
Cuando usas una navegación basada en <nav>, puedes omitir con seguridad .nav-item como solo .nav-link para aplicar estilo a los elementos <a>.
Para elementos de igual ancho, usa .nav-justified. Todo el espacio horizontal estará ocupado por enlaces de navegación, pero a diferencia del .nav-fill anterior, cada elemento de navegación tendrá el mismo ancho.
Similar al ejemplo de .nav-fill usando una navegación basada en <nav>.
Trabajar con utilidades flexibles
Si necesitas variaciones de nav responsive, considera usar una serie de utilidades flexbox. Si bien son más detalladas, estas utilidades ofrecen una mayor personalización en los puntos de interrupción responsive. En el siguiente ejemplo, nuestra navegación se apilará en el punto de interrupción más bajo y luego se adaptará a un diseño horizontal que llena el ancho disponible a partir del punto de interrupción pequeño.
Respecto a la accesibilidad
Si estás usando navs para proporcionar una barra de navegación, asegúrate de agregar un role="navigation" al contenedor padre más lógico del <ul>, o envuelve un elemento <nav> alrededor de toda la navegación. No agregues el rol al <ul> en sí, ya que esto evitaría que las tecnologías de asistencia lo anuncien como una lista real.
Ten en cuenta que las barras de navegación, incluso si están diseñadas visualmente como pestañas con la clase .nav-tabs, no deben darse role="tablist", role="tab" o role="tabpanel". Estos solo son apropiados para interfaces dinámicas con pestañas, como se describe en el patrón de pestañas de la Guía de prácticas de creación de ARIA. Consulta comportamiento de JavaScript para interfaces dinámicas con pestañas en esta sección para ver un ejemplo. El atributo aria-current no es necesario en interfaces dinámicas con pestañas ya que nuestro JavaScript maneja el estado seleccionado agregando aria-selected="true" en la pestaña activa.
Como parte del enfoque de evolución de variables CSS de Bootstrap, los navegadores ahora usan variables CSS locales en .nav, .nav-tabs, y .nav-pills para una personalización mejorada en tiempo real. Los valores de las variables CSS se establecen a través de Sass, por lo que la personalización de Sass también es compatible.
Utiliza el complemento JavaScript de pestañas (inclúyelo individualmente o mediante el archivo bootstrap.js compilado) para ampliar nuestras pestañas y píldoras de navegación para crear paneles con pestañas de paneles con contenido local.
Para ayudarte a satisfacer tus necesidades, esto funciona con el marcado basado en <ul>, como se muestra arriba, o con cualquier marcado arbitrario “roll your own”. Ten en cuenta que si estás utilizando <nav>, no debes agregarle role="tablist" directamente, ya que esto sobrescribiría la función nativa del elemento como hito de navegación. En su lugar, cambia a un elemento alternativo (en el ejemplo siguiente, un <div> simple) y envuélvelo con <nav>.
El complemento de pestañas también funciona con pastillas.
Y con pastillas verticales. Idealmente, para pestañas verticales, también deberías agregar aria-orientation="vertical" al contenedor de la lista de pestañas.
Accesibilidad
Interfaces dinámicas con pestañas, como se describe en las Prácticas de Creación de Patrón de pestañas de ARIA, requiere role="tablist", role="tab", role="tabpanel" y adicionales atributos aria- para transmitir su estructura, funcionalidad y estado actual a los usuarios de tecnologías de asistencia (como lectores de pantalla). Como práctica recomendada, recomendamos utilizar elementos <button> para las pestañas, ya que son controles que desencadenan un cambio dinámico, en lugar de enlaces que navegan a una nueva página o ubicación.
De acuerdo con el patrón ARIA Authoring Practices, solo la pestaña actualmente activa recibe el foco del teclado. Cuando se inicializa el complemento JavaScript, establecerá tabindex="-1" en todos los controles de pestañas inactivas. Una vez que la pestaña actualmente activa tiene el foco, las teclas del cursor activan la pestaña anterior/siguiente. Las teclas Inicio y Fin activan la primera y la última pestaña, respectivamente. El complemento cambiará el roving tabindex en consecuencia. Sin embargo, ten en cuenta que el complemento JavaScript no distingue entre listas de pestañas horizontales y verticales cuando se trata de interacciones con las teclas del cursor: independientemente de la orientación de la lista de pestañas, tanto el cursor arriba como izquierdo van a la pestaña anterior y abajo y el cursor derecho va a la siguiente pestaña.
Usar atributos de datos
Puedes activar una pestaña o píldora de navegación sin escribir ningún JavaScript simplemente especificando data-bs-toggle="tab" o data-bs-toggle="pill" en un elemento. Utiliza estos atributos de datos en .nav-tabs o .nav-pills.
Vía JavaScript
Habilita las pestañas a través de JavaScript (cada pestaña debe activarse individualmente):
Puedes activar pestañas individuales de varias maneras:
Efecto desvanecimiento
Para hacer que las pestañas aparezcan gradualmente, agrega .fade a cada .tab-pane. El primer panel de pestañas también debe tener .show para que el contenido inicial sea visible.
Métodos
Activa tu contenido como elemento de pestaña.
Puedes crear una instancia de pestaña con el constructor, por ejemplo:
Método
Descripción
dispose
Destruye la pestaña de un elemento.
getInstance
Método estático que te permite obtener la instancia de pestaña asociada con un elemento DOM, puedes usarlo así: bootstrap.Tab.getInstance(element).
getOrCreateInstance
Método estático que devuelve una instancia de pestaña asociada a un elemento DOM o crea una nueva en caso de que no haya sido inicializada. Puedes usarlo así: bootstrap.Tab.getOrCreateInstance(element).
show
Selecciona la pestaña dada y muestra su panel asociado. Cualquier otra pestaña que se haya seleccionado previamente deja de estar seleccionada y su panel asociado se oculta. Vuelve a la persona que llama antes de que se haya mostrado realmente el panel de pestañas (es decir, antes de que se produzca el evento shown.bs.tab).
Eventos
Cuando se muestra una nueva pestaña, los eventos se activan en el siguiente orden:
hide.bs.tab (en la pestaña activa actual)
show.bs.tab (en la pestaña para mostrar)
hidden.bs.tab (en la pestaña activa anterior, la misma que para el evento hide.bs.tab)
shown.bs.tab (en la pestaña recién mostrada recién activa, la misma que para el evento show.bs.tab)
Si ninguna pestaña ya estaba activa, entonces los eventos hide.bs.tab y hidden.bs.tab no se activarán.
Tipo de evento
Descripción
hide.bs.tab
Este evento se activa cuando se va a mostrar una nueva pestaña (y, por lo tanto, la pestaña activa anterior se va a ocultar). Utiliza event.target y event.relatedTarget para apuntar a la pestaña activa actual y a la nueva pestaña que pronto estará activa, respectivamente.
hidden.bs.tab
Este evento se activa después de que se muestra una nueva pestaña (y, por lo tanto, la pestaña activa anterior está oculta). Utiliza event.target y event.relatedTarget para apuntar a la pestaña activa anterior y a la nueva pestaña activa, respectivamente.
show.bs.tab
Este evento se activa al mostrar la pestaña, pero antes de que se muestre la nueva pestaña. Utiliza event.target y event.relatedTarget para apuntar a la pestaña activa y a la pestaña activa anterior (si está disponible) respectivamente.
shown.bs.tab
Este evento se activa al mostrar una pestaña después de que se haya mostrado una pestaña. Utiliza event.target y event.relatedTarget para apuntar a la pestaña activa y a la pestaña activa anterior (si está disponible) respectivamente.