Eu gostaria de ter uma mesa no meu site. O problema é que esta tabela terá cerca de 400 linhas. Como posso limitar a altura da tabela e aplicar a barra de rolagem? Este é o meu código:
<div class="span3">
<h2>Achievements left</h2>
<table class="table table-striped">
<thead>
<tr>
<th>#</th>
<th>Name</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Something</td>
</tr>
<tr>
<td>2</td>
<td>Something</td>
</tr>
<tr>
<td>3</td>
<td>Something</td>
</tr>
<tr>
<td>4</td>
<td>Something</td>
</tr>
<tr>
<td>5</td>
<td>Something</td>
</tr>
<tr>
<td>6</td>
<td>Something</td>
</tr>
</tbody>
</table>
<p><a class="btn" href="#">View details »</a></p>
</div>
Tentei aplicar a altura máxima e a altura fixa à mesa, mas não funciona.
twitter-bootstrap
pangi
fonte
fonte
overflow
apenas no corpo da tabela, mas onde as<thead>
peças são sempre exibidas?Você deseja envolvê-lo em sua própria div ou atribuir a esse span3 um ID próprio para não afetar todo o layout.
Aqui está um violino: http://jsfiddle.net/zm6rf/
fonte
.span3
afetará todos osspan3
elementos em todo o site controlado por Bootstrap.Não precisa embrulhá-lo em uma div ...
CSS :
Bootply : http://www.bootply.com/AgI8LpDugl
fonte
td
elemento variam em tamanho. bootply.com/OsvzINuTUAEu tive o mesmo problema e usei uma combinação das soluções acima (e adicionei um toque pessoal). Observe que eu tive que especificar as larguras das colunas para mantê-las consistentes entre o cabeçalho e o corpo.
Na minha solução, o cabeçalho e o rodapé permanecem fixos enquanto o corpo rola.
E então apenas apliquei o seguinte CSS:
Espero que isto ajude alguém.
fonte
Recentemente, tive que fazer isso com o bootstrap e o angularjs, criei uma diretiva angularjs que resolve o problema. Você pode ver um exemplo de trabalho e detalhes nesta postagem do blog .
Você o usa apenas adicionando um atributo de cabeçalho fixo à tag da tabela:
Se você não estiver usando o angularjs, poderá ajustar o javascript da diretiva e usá-lo diretamente.
fonte
CSS
HTML
fonte
.table-class-name { height: 100%; }
.Esta pode não ser uma solução para uma grande contagem de linhas. Eu simplesmente uso o truque da tabela de duplicação para fazer a coisa para a tabela de contagem de linhas pequena, enquanto ela pode manter a largura da coluna flexível, você pode tentar esse violino .
(A coluna de largura fixa é o método que eu uso para a tabela de contagem de linhas grandes que requer apenas a duplicação da linha de cabeçalho)
Código de amostra:
fonte
Coloque a tabela em uma div e dê a essa div a classe
pre-scrollable
.fonte
Recentemente, tive um problema semelhante e acabei corrigindo-o usando uma mistura de soluções diferentes.
A primeira e mais simples foi usar duas tabelas, uma para os cabeçalhos e outra para o corpo. Isso funciona, mas os cabeçalhos e as colunas do corpo não estão alinhados. E, como eu queria usar o tamanho automático que acompanha as tabelas de inicialização do twitter, acabei criando uma função Javascript que altera os cabeçalhos quando: o corpo é renderizado; as janelas são redimensionadas; os dados na coluna são alterados etc.
Aqui está um pouco do código que eu usei:
Os cabeçalhos e o corpo são divididos em duas tabelas separadas. Um deles está dentro de um DIV com o estilo necessário para gerar as barras de rolagem verticais. Aqui está o CSS que eu usei:
Comentei a altura aqui porque queria que a tabela chegasse ao final da página, qualquer que seja a altura da página.
Os atributos de classificação de dados que usei nos cabeçalhos também são usados em todos os td. Dessa forma, eu poderia obter a largura e o preenchimento de cada td e a largura da linha. Usando os atributos de ordenação de dados, defino usando CSS o preenchimento e a largura de cada cabeçalho de acordo e da linha do cabeçalho, que é sempre maior, pois não possui uma barra de rolagem. Aqui está a função usando coffeescript:
Aqui, presumo que você tenha uma matriz de cabeçalhos chamada @headers.
Não é bonito, mas funciona. Espero que ajude alguém.
fonte
Todas as soluções acima também rolam o cabeçalho da tabela ... Se você deseja rolar apenas para o corpo, aplique o seguinte:
fonte
Nenhuma dessas respostas funcionou satisfatoriamente para mim. Eles não consertaram a linha de cabeçalho da tabela ou exigiram larguras de colunas fixas para funcionar e, mesmo assim, tendiam a ter a linha de cabeçalho e as linhas do corpo desalinhadas em vários navegadores.
Eu recomendo morder a bala e usar um controle de grade apropriado como jsGrid ou meu favorito pessoal, SlickGrid . Obviamente, isso introduz uma dependência, mas se você deseja que suas tabelas se comportem como grades reais com suporte a vários navegadores, isso poupará você a arrancar os cabelos. Também oferece a opção de classificar e redimensionar colunas, além de vários outros recursos, se você desejar.
fonte
Re sugestão de Jonathan Wood. Não tenho a opção de quebrar tabelas com uma nova div, pois estou usando um CMS. Usando JQuery aqui está o que eu fiz:
Isso agrupa os elementos da tabela com uma nova div com a classe "estouro de tabela".
Você pode simplesmente adicionar a seguinte definição no seu arquivo css:
fonte
coloque a tabela dentro da div para fazer 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
Imaginei que iria postar aqui, já que não consegui fazer com que nenhum dos itens acima funcione com o Bootstrap 4. Encontrei isso online e funcionou perfeitamente para mim ...
Também anexei o jsfindle em funcionamento.
https://jsfiddle.net/jgngg28t/
Espero que isso ajude mais alguém.
fonte