Uso de Tablas con Bootstrap
Documentación y ejemplos para el diseño de tablas (dado su uso frecuente en complementos de JavaScript) con Bootstrap.
Descripción general
Debido al uso generalizado de elementos <table>
en widgets de terceros como calendarios y selectores de fechas, las tablas de Bootstrap son opt-in. Agrega la clase base .table
a cualquier <table>
y luego extiéndela con nuestras clases modificadoras opcionales o estilos personalizados. No todos los estilos de tabla se heredan en Bootstrap, lo que significa que cualquier tabla anidada puede tener un estilo independiente del padre.
Usando el marcado de tabla más básico, así es como se ven las tablas basadas en .table
en Bootstrap.
Variantes
Usa clases contextuales para colorear tablas, filas de tablas o celdas individuales.
Tablas acentuadas
Filas rayadas
Usa .table-striped
para agregar rayas de cebra a cualquier fila de la tabla dentro del <tbody>
.
Columnas rayadas
Usa .table-striped-columns
para agregar rayas de cebra a cualquier columna de la tabla.
Estas clases también se pueden agregar a las variantes de la tabla:
Filas flotantes
Agrega .table-hover
para habilitar un estado de desplazamiento en las filas de la tabla dentro de un <tbody>
.
Estas filas flotantes también se pueden combinar con la variante de filas rayadas:
Tablas activas
Resalta una fila o celda de una tabla agregando una clase .table-active
.
¿Cómo funcionan las variantes y tablas acentuadas?
Para las tablas acentuadas (filas rayadas, columnas rayadas, filas flotantes y tablas activas), utilizamos algunas técnicas para que estos efectos funcionen para todas nuestras variantes de tabla:
- Comenzamos configurando el fondo de una celda de la tabla con la propiedad personalizada
--bs-table-bg
. Luego, todas las variantes de la tabla establecen esa propiedad personalizada para colorear las celdas de la tabla. De esta forma, no nos meteremos en problemas si se utilizan colores semitransparentes como fondo de tabla. - Luego agregamos una sombra de cuadro insertado en las celdas de la tabla con
box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));
para colocarlo encima de cualquierbackground-color
especificado. Utiliza una cascada personalizada para sobrescribirbox-shadow
, independientemente de la especificidad de CSS. Debido a que utilizamos una extensión enorme y sin desenfoque, el color será monótono. Dado que--bs-table-accent-bg
está configurado entransparent
de forma predeterminada, no tenemos una sombra de cuadro predeterminada. - Cuando se agregan las clases
.table-striped
,.table-striped-columns
,.table-hover
o.table-active
, ya sea--bs-table-bg-type
o--bs-table-bg-state
(por defecto configurado eninitial
) están configurados en un color semitransparente (--bs-table-striped-bg
,--bs-table-active-bg
o--bs-table-hover-bg
) para colorear el fondo y sobrescribir el--bs-table-accent-bg
predeterminado. - Para cada variante de tabla, generamos un color
--bs-table-accent-bg
con el mayor contraste dependiendo de ese color. Por ejemplo, el color de acento de.table-primary
es más oscuro, mientras que.table-dark
tiene un color de acento más claro. - Los colores del texto y del borde se generan de la misma manera y sus colores se heredan de forma predeterminada.
Detrás de escena se ve así:
scss/mixins/_table-variants.scss
Bordes de tabla
Tablas con borde
Agrega .table-bordered
para los bordes en todos los lados de la tabla y las celdas.
Utilidades de color de borde pueden ser añadidas para cambiar colores:
Tablas sin bordes
Agrega .table-borderless
para una tabla sin bordes.
Tablas pequeñas
Agrega .table-sm
para hacer cualquier .table
más compacta cortando todo el padding
de la celda por la mitad.
Divisores de grupos de tabla
Agrega un borde más grueso y más oscuro entre los grupos de tablas—<thead>
, <tbody>
y <tfoot>
— con .table-group-divider
. Personaliza el color cambiando el border-top-color
(para el cual actualmente no proporcionamos una clase de utilidad).
Alineación vertical
Las celdas de la tabla de <thead>
siempre están alineadas verticalmente hacia abajo. Las celdas de la tabla en <tbody>
heredan su alineación de <table>
y están alineadas en la parte superior de forma predeterminada. Utiliza las clases de alineación vertical para realinear donde sea necesario.
Anidamiento
Las tablas anidadas no heredan los estilos de borde, los estilos activos y las variantes de tabla.
Cómo funciona el anidamiento
Para evitar que cualquier estilo se filtre a tablas anidadas, usamos el selector del combinador secundario (>
) en nuestro CSS. Dado que necesitamos apuntar a todos los td
s y th
s en thead
, tbody
y tfoot
, nuestro selector parecería bastante largo sin él. Como tal, utilizamos el .table > :not(caption) > * > *
selector para apuntar a todos los td
y th
de .table
, pero a ninguna de las posibles tablas anidadas.
Ten en cuenta que si agregas <tr>
s como hijos directos de una tabla, esos <tr>
serán envuelto en un <tbody>
de forma predeterminada, lo que hace que nuestros selectores funcionen según lo previsto.
Anatomía
Cabecera de tabla
Similar a las tablas y las tablas oscuras, usa las clases modificadoras .table-light
o .table-dark
para hacer <thead>
aparezcan en gris claro u oscuro.
Pie de tabla
Subtítulos
Un <caption>
funciona como el encabezado de una tabla. Ayuda a los usuarios con lectores de pantalla a encontrar una tabla, comprender de qué se trata y decidir si quieren leerla.
También puedes poner el <caption>
en la parte superior de la tabla con .caption-top
.
Tablas responsive
Las tablas responsive permiten desplazarse horizontalmente con facilidad. Haz que cualquier tabla responda en todas las viewports envolviendo un .table
con .table-responsive
. O elige un punto de interrupción máximo con el cual tener una tabla responsive usando .table-responsive{-sm|-md|-lg|-xl|-xxl}
.
Siempre responsive
En cada punto de interrupción, usa .table-responsive
para desplazarte horizontalmente por las tablas.
Punto de interrupción específico
Usa .table-responsive{-sm|-md|-lg|-xl|-xxl}
según sea necesario para crear tablas responsive hasta un determinado punto de interrupción. A partir de ese punto de interrupción, la tabla se comportará normalmente y no se desplazará horizontalmente.
Estas tablas pueden aparecer rotas hasta que sus estilos responsive se apliquen en anchos de ventana específicos.
Personalización del CSS
Variables Sass generales relacionadas
Sass loops
Personalización
- Las variables de factor (
$table-striped-bg-factor
,$table-active-bg-factor
y$table-hover-bg-factor
) se utilizan para determinar el contraste en las variantes de la tabla. - Aparte de las variantes claro y oscuro de tabla, los colores del tema se aclaran con la variable
$table-bg-scale
.