Estoy tratando de hacer una tabla con un encabezado fijo y un contenido desplazable usando la tabla bootstrap 3. Lamentablemente, las soluciones que he encontrado no funcionan con bootstrap ni alteran el estilo.
Aquí hay una tabla de arranque simple, pero por alguna razón, para mí, desconocido, la altura del cuerpo no es de 10px.
height: 10px !important; overflow: scroll;
Ejemplo:
<link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css">
<table class="table table-striped">
<thead>
<tr>
<th>Make</th>
<th>Model</th>
<th>Color</th>
<th>Year</th>
</tr>
</thead>
<tbody style="height: 10px !important; overflow: scroll; ">
<tr>
<td class="filterable-cell">111 Ford</td>
<td class="filterable-cell">Escort</td>
<td class="filterable-cell">Blue</td>
<td class="filterable-cell">2000</td>
</tr>
<tr>
<td class="filterable-cell">Ford</td>
<td class="filterable-cell">Escort</td>
<td class="filterable-cell">Blue</td>
<td class="filterable-cell">2000</td>
</tr>
<tr>
<td class="filterable-cell">Ford</td>
<td class="filterable-cell">Escort</td>
<td class="filterable-cell">Blue</td>
<td class="filterable-cell">2000</td>
</tr>
<tr>
<td class="filterable-cell">Ford</td>
<td class="filterable-cell">Escort</td>
<td class="filterable-cell">Blue</td>
<td class="filterable-cell">2000</td>
</tr>
</tbody>
</table>
html
css
twitter-bootstrap
html-table
Giulio
fuente
fuente
Respuestas:
Cabezal de mesa fijo: solo CSS
Simplemente
position: sticky; top: 0;
tusth
elementos. (Chrome, FF, Edge)TH limita problema solucionado
Como
border
no se puede pintar correctamente en unTH
elemento traducido , para recrear y renderizar "bordes" use labox-shadow
propiedad:Mostrar fragmento de código
Cabezal de mesa fijo - usando JS. (ES DECIR)
Puedes usar un poco de JS y traducir los
th
elementosEjemplo de jQuery
O simplemente ES6 si lo prefiere (no se requiere jQuery):
fuente
Probablemente obtendrá varias tablas en una página, por lo tanto, necesita clases de CSS. Encuentre una solución de @ giulio modificada para eso.
Solo declaralo en la tabla:
CSS
Tenga en cuenta que la implementación actual se adapta solo a cinco columnas. Si necesita un número diferente, cambie el parámetro de ancho de 20% a * 100% / number_of_columns *.
fuente
.header-fixed > thead > tr > th{white-space: nowrap;}
también. Si los encabezados comienzan ascrollbar-width: none;
a tbody por razones estéticasAquí está la solución de trabajo:
Enlace a jsfiddle
fuente
Actualizar
Para una biblioteca más nueva y aún mantenida, intente jquery.floatThead (como mencionó Bob Jordan en el comentario) .
Vieja respuesta
Esta es una respuesta muy antigua, la biblioteca mencionada a continuación ya no se mantiene.
Estoy usando StickyTableHeaders en GitHub y funciona de maravilla .
Sin embargo, tuve que agregar este CSS para que el encabezado no sea transparente.
fuente
.tableFloatingHeaderOriginal { //css }
.No necesito envolverlo en un div ...
CSS :
Bootply : http://www.bootply.com/AgI8LpDugl
fuente
position: absolute
entbody
ayudó! Gracias !!Es más fácil con css
fuente
table-layout:fixed
agregando una clase CSS con JavaScriptTarde a la fiesta (Historia de mi vida), pero como este es el primer resultado en Google, y ninguno de los anteriores me puso a trabajar, aquí está mi código
fuente
th:nth-child(2), td:nth-child(2)
es equivalente atr > :nth-child(2)
En mi opinión, uno de los mejores complementos para jQuery es DataTables .
También tiene una extensión para encabezado fijo , y se implementa muy fácilmente.
Tomado de su sitio:
HTML:
JavaScript:
Pero lo más simple que puede tener para hacer un desplazamiento
<tbody>
es:fuente
La última posición de adición: 'pegajosa' sería la solución más simple aquí
fuente
No necesitas js. Importante es establecer la altura de la mesa en [ vh ]
fuente
Tuve muchos problemas para que funcionara la biblioteca stickytableheaders. Haciendo un poco más de búsqueda, encontré que floatThead es una alternativa mantenida activamente con actualizaciones recientes y una mejor documentación.
fuente
Deberías probar con "display: block;" a tbody, porque ahora es bloque en línea y para establecer la altura, el elemento debe ser "bloque"
fuente
Primero agregue algo de marcado para una tabla de arranque. Aquí creé una tabla rayada pero también agregué una clase de tabla personalizada
.table-scroll
que agrega una barra de desplazamiento vertical a la tabla y hace que el encabezado de la tabla sea fijo mientras se desplaza hacia abajo.css
fuente
Usé el complemento floatThead jQuery ( https://mkoryak.github.io/floatThead/#intro )
los documentos dicen que funciona con las tablas Bootstrap 3 y puedo decir que también funciona con las tablas Bootstrap 4 con o sin el asistente de respuesta a la tabla.
Usar el complemento es tan simple como esto:
HTML (marcado de tabla de arranque de vainilla)
Inicialización del complemento:
Descargo de responsabilidad completo: no estoy asociado con el complemento de ninguna manera. Lo encontré después de horas de probar muchas otras soluciones publicadas aquí y en otros lugares.
fuente
Para lo que sea que valga la pena ahora: publiqué una solución para un desplazamiento de tabla de subprocesos hermanos con HTML y CSS que
visibility
, nodisplay
) el encabezado de la tabla inferior y hacer que la tabla inferior se pueda desplazar con un divLa solución es independiente de cualquier estilo / marco utilizado, por lo que quizás también sea útil aquí ...
Una descripción larga está en el Desplazamiento de tabla con HTML y CSS / el código también está en este bolígrafo: https://codepen.io/sebredhh/pen/QmJvKy
fuente
Para tablas de altura completa (la página se desplaza, no la tabla)
Nota: muevo todo
<thead>...</thead>
porque en mi caso tenía dos filas (Título y filtros)Con JS (jQuery)
CSS (solo para diseñar)
fuente
Ahora que "todos" los navegadores admiten ES6, he incorporado las diversas sugerencias anteriores en una clase de JavaScript que toma una tabla como argumento y hace que el cuerpo se pueda desplazar. Permite que el motor de diseño del navegador determine el ancho de las celdas del encabezado y el cuerpo, y luego hace que los anchos de las columnas coincidan entre sí.
La altura de una tabla se puede establecer explícitamente o hacer que llene la parte restante de la ventana del navegador, y proporciona devoluciones de llamada para eventos como el cambio de tamaño de la ventana gráfica y / o la
details
apertura o cierre de elementos.El soporte de encabezado de varias filas está disponible, y es especialmente efectivo si la tabla usa los atributos id / encabezados para accesibilidad como se especifica en las Directrices WCAC , lo cual no es un requisito tan oneroso como podría parecer.
El código no depende de ninguna biblioteca, pero juega muy bien con ellas si se están utilizando. (Probado en páginas que usan JQuery).
El código y el uso de muestra están disponibles en Github .
fuente
Puede colocar dos div donde el primer div (Encabezado) tendrá una barra de desplazamiento transparente y el segundo div tendrá datos con la barra de desplazamiento visible / automática. La muestra tiene un fragmento de código angular para recorrer los datos.
El siguiente código funcionó para mí:
Estilo adicional para ocultar la barra de desplazamiento del encabezado:
fuente
Aquí está mi bolígrafo copen sobre cómo hacer un encabezado de tabla fijo con filas y columnas desplazables. Las columnas también tienen ancho fijo, http://codepen.io/abhilashn/pen/GraJyp
fuente
Solución más limpia (solo CSS)
fuente
Soporte de múltiples tablas desplazables en una sola ventana.
CSS puro y no fijo o pegajoso.
Estoy buscando encabezado de tabla fijo con auto "td" y "th" ancho durante años. Finalmente codifiqué algo, funciona bien para mí, pero no estoy seguro de que funcione bien para todos.
Problema 1: No podemos establecer la altura de la tabla o del cuerpo mientras tenemos toneladas de "tr" debido a las propiedades predeterminadas de la tabla.
Solución: establezca la tabla como una propiedad de visualización.
Problema 2: cuando establecemos una propiedad de visualización, el ancho de los elementos "td" no puede ser igual al ancho de los elementos "th". Y es difícil llenar elementos correctamente en una tabla de ancho completo como 100%.
Solución: CSS "flex" es una muy buena solución para configuraciones de ancho y relleno, por lo que construiremos nuestros elementos tbody y thead con CSS "flex".
jsfiddle
fuente
fuente
Usé este enlace, stackoverflow.com/a/17380697/1725764 , por Hashem Qolami en los comentarios de las publicaciones originales y usé display: bloques en línea en lugar de flotantes. Corrige los bordes si la tabla también tiene la clase 'table -bordered'.
Luego solo agregue los anchos de td y th
fuente
Hice alguna solución de CSS un poco funcional usando
position: sticky
. Debería funcionar en navegadores de hoja perenne. Intenta cambiar el tamaño del navegador. Todavía tengo algún problema de diseño en FF, lo solucionará más tarde, pero al menos los encabezados de tabla manejan el desplazamiento vertical y horizontal. Ejemplo de Codepenfuente
HTML
CSS
fuente
Una manera fácil sin ancho fijo:
Fuente
Ahora, en onLoad, para ajustar los anchos, simplemente agregue este script jquery:
fuente
coloca la tabla dentro del div de esta manera para hacer que la tabla se pueda desplazar verticalmente. cambie
overflow-y
aoverflow-x
para hacer que la tabla se pueda desplazar horizontalmente. solooverflow
para hacer que la mesa se pueda desplazar tanto horizontal como verticalmente.fuente
fuente