Eu estou tentando fazer uma tabela com cabeçalho fixo e um conteúdo rolável usando a tabela de inicialização 3. Infelizmente, as soluções que encontrei não funcionam com o bootstrap nem atrapalham o estilo.
Aqui há uma tabela de inicialização simples, mas por algum motivo, para mim, a altura do corpo não é 10px.
height: 10px !important; overflow: scroll;
Exemplo:
<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
fonte
fonte
Respostas:
Cabeçalho da tabela fixo - somente CSS
Simplesmente
position: sticky; top: 0;
seusth
elementos. (Chrome, FF, Borda)Correção de problema nas bordas do TH
Como
border
não pode ser pintado corretamente em umTH
elemento traduzido , para recriar e renderizar "bordas", use abox-shadow
propriedade:Mostrar snippet de código
Corrigido cabeçalho da tabela - usando JS. (IE)
Você pode usar um pouco de JS e traduzir os
th
elementosExemplo de jQuery
Ou simplesmente ES6, se você preferir (não é necessário jQuery):
fonte
É provável que você obtenha várias tabelas em uma página, portanto, você precisa de classes CSS. Por favor, encontre a solução de @ giulio modificada para isso.
Apenas declare na tabela:
CSS
Esteja ciente de que a implementação atual atende apenas a cinco colunas. Se você precisar de um número diferente, altere o parâmetro width de 20% para * 100% / number_of_columns *.
fonte
.header-fixed > thead > tr > th{white-space: nowrap;}
também. Se cabeçalhos começar envolvendo ele mexe as coisasscrollbar-width: none;
ao tbody por razões estéticasAqui está a solução de trabalho:
Link para jsfiddle
fonte
Atualizar
Para uma biblioteca mais nova e ainda mantida, tente jquery.floatThead (como mencionado por Bob Jordan no comentário) .
Resposta antiga
Esta é uma resposta muito antiga, a biblioteca mencionada abaixo não é mais mantida.
Estou usando StickyTableHeaders no GitHub e funciona como charme!
Eu tive que adicionar esse css para tornar o cabeçalho não transparente.
fonte
.tableFloatingHeaderOriginal { //css }
.Não precisa embrulhá-lo em uma div ...
CSS :
Bootply : http://www.bootply.com/AgI8LpDugl
fonte
position: absolute
ontbody
ajudou !! Obrigado !!É mais fácil com css
fonte
table-layout:fixed
adicionando uma classe CSS com JavaScriptTarde para a festa (História da minha vida), mas como esse é o primeiro resultado no google, e nenhuma das opções acima me fez trabalhar, aqui está o meu código
fonte
th:nth-child(2), td:nth-child(2)
é equivalente atr > :nth-child(2)
A meu ver, um dos melhores plugins para o jQuery é o DataTables .
Ele também possui uma extensão para cabeçalho fixo e é muito facilmente implementado.
Retirado de seu site:
HTML:
JavaScript:
Mas o mais simples que você pode ter para criar um rolagem
<tbody>
é:fonte
A última posição de adição: 'pegajosa' seria a solução mais simples aqui
fonte
Você não precisa de js. Importante é definir a altura da tabela em [ vh ]
fonte
Eu tive muitos problemas para fazer com que a biblioteca stickytableheaders funcionasse. Pesquisando um pouco mais, descobri que o floatThead é uma alternativa mantida ativamente, com atualizações recentes e melhor documentação.
fonte
Você deve tentar com "display: block;" para tbody, porque agora é bloco embutido e, para definir a altura, o elemento deve ser "bloco"
fonte
Primeiro adicione algumas marcações para uma tabela de inicialização. Aqui eu criei uma tabela listrada, mas também adicionei uma classe de tabela personalizada
.table-scroll
que adiciona barra de rolagem vertical à tabela e torna o cabeçalho da tabela fixo enquanto rola a rolagem para baixo.css
fonte
Eu usei o plugin jQuery floatThead ( https://mkoryak.github.io/floatThead/#intro )
Os documentos dizem que funciona com as tabelas do Bootstrap 3 e posso dizer que também funciona com as tabelas do Bootstrap 4, com ou sem o auxiliar responsivo à tabela.
Usar o plugin é tão simples quanto isto:
HTML (marcação de tabela de inicialização de baunilha)
Inicialização do plug-in:
Isenção de responsabilidade total: não estou associado ao plugin de forma alguma. Por acaso o encontrei depois de horas tentando várias outras soluções postadas aqui e em outros lugares.
fonte
Para o que vale a pena agora: publiquei uma solução em um pergaminho de tabela irmã-thread com HTML e CSS que
visibility
, nãodisplay
) o cabeçalho da tabela inferior e tornar a tabela inferior rolável com uma divA solução é independente de qualquer estilo / estrutura usada - então talvez seja útil aqui também ...
Uma descrição longa está na rolagem de tabela com HTML e CSS / o código também está nesta caneta: https://codepen.io/sebredhh/pen/QmJvKy
fonte
Para tabelas com altura total (a página rola, não a tabela)
Nota: movo o todo
<thead>...</thead>
beause No meu caso, eu tinha duas linhas (título e filtros)Com JS (jQuery)
CSS (apenas para estilizar)
fonte
Agora que "todos" os navegadores oferecem suporte ao ES6, incorporei as várias sugestões acima em uma classe JavaScript que usa uma tabela como argumento e torna o corpo rolável. Ele permite que o mecanismo de layout do navegador determine as larguras das células do cabeçalho e da célula corporal e, em seguida, ajusta as larguras das colunas.
A altura de uma tabela pode ser definida explicitamente ou ajustada para preencher a parte restante da janela do navegador e fornece retornos de chamada para eventos como redimensionamento da viewport e / ou
details
elementos de abertura ou fechamento.O suporte ao cabeçalho de várias linhas está disponível e é especialmente eficaz se a tabela usar os atributos id / headers para acessibilidade, conforme especificado nas Diretrizes do WCAC , que não é um requisito tão oneroso quanto pode parecer.
O código não depende de nenhuma biblioteca, mas funciona bem com elas se estiverem sendo usadas. (Testado em páginas que usam JQuery).
O código e o uso da amostra estão disponíveis no Github .
fonte
Você pode colocar duas div, onde a primeira div (cabeçalho) terá uma barra de rolagem transparente e a segunda div terá dados com a barra de rolagem visível / automática. A amostra possui um trecho de código angular para fazer um loop pelos dados.
O código abaixo funcionou para mim -
Estilo adicional para ocultar a barra de rolagem do cabeçalho -
fonte
Aqui está minha caneta copen sobre como criar cabeçalho de tabela fixo com linhas e colunas roláveis. As colunas também têm largura fixa, http://codepen.io/abhilashn/pen/GraJyp
fonte
Solução mais limpa (somente CSS)
fonte
Suporte a várias tabelas roláveis em uma única janela.
CSS puro e não fixo ou pegajoso.
Estou pesquisando o cabeçalho da tabela fixa com largura "td" e "th" automática por anos. Finalmente eu codifiquei algo, é bom para mim, mas não tenho certeza se é bom para todos.
Problema 1: Não podemos definir a altura da tabela ou do corpo enquanto temos toneladas de "tr" devido às propriedades padrão da tabela.
Solução: defina a tabela como uma propriedade de exibição.
Problema 2: Quando definimos uma propriedade de exibição, a largura dos elementos "td" não pode ser igual à largura dos elementos "th". E é difícil preencher os elementos corretamente na tabela de largura total, como 100%.
Solução: o CSS "flex" é uma solução muito boa para configurações de largura e preenchimento, portanto, construiremos nossos elementos de corpo e corpo com o CSS "flex".
jsfiddle
fonte
Usou este link, stackoverflow.com/a/17380697/1725764 , de Hashem Qolami nos comentários das postagens originais e usou a exibição: blocos em linha em vez de carros alegóricos. Corrige bordas se a tabela também tiver a classe 'table-border'.
Em seguida, basta adicionar as larguras do td e th
fonte
Eu fiz um pouco de solução CSS trabalhando apenas usando
position: sticky
. Deve funcionar em navegadores sempre verdes. Tente redimensionar o navegador. Ainda tem algum problema de layout no FF, o corrigirá mais tarde, mas pelo menos os cabeçalhos de tabela lidam com rolagem vertical e horizontal. Exemplo de Codepenfonte
HTML
CSS
fonte
Uma maneira fácil, sem largura fixa:
Fonte
Agora, no onLoad, para ajustar as larguras, basta adicionar este script jquery:
fonte
coloque a tabela dentro da div assim para criar a tabela rolável verticalmente. mude
overflow-y
paraoverflow-x
para tornar a tabela rolável horizontalmente. apenasoverflow
para tornar a tabela rolável na horizontal e na vertical.fonte
fonte