Estou construindo um aplicativo da web usando o Bootstrap 4 e encontrando alguns problemas estranhos. Desejo utilizar a classe de resposta de tabela do Bootstrap para permitir a rolagem horizontal das tabelas em dispositivos móveis. Em dispositivos desktop, a mesa deve ocupar 100% da largura do DIV que o contém.
Assim que eu aplico a classe .table-responsive à minha mesa, a mesa encolhe horizontalmente e não ocupa mais 100% da largura. Alguma ideia?
Aqui está minha marcação:
<!DOCTYPE html>
<html lang="en" class="mdl-js">
<head>
<title></title>
<meta charset="utf-8">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="application-name" content="">
<meta name="theme-color" content="#000000">
<link rel="stylesheet" href="/css/bundle.min.css">
</head>
<body>
<div class="container-fluid no-padding">
<div class="row">
<div class="col-md-12">
<table class="table table-responsive" id="Queue">
<thead>
<tr>
<th><span span="sr-only">Priority</span></th>
<th>Origin</th>
<th>Destination</th>
<th>Mode</th>
<th>Date</th>
<th><span span="sr-only">Action</span></th>
</tr>
</thead>
<tbody>
<tr class="trip-container" id="row-6681470c-91ce-eb96-c9be-8e89ca941e9d" data-id="6681470c-91ce-eb96-c9be-8e89ca941e9d">
<td>0</td>
<td>PHOENIX, AZ</td>
<td>SAN DIEGO, CA</td>
<td>DRIVING</td>
<td><time datetime="2017-01-15T13:59">2017-01-15 13:59:00</time></td>
<td><span class="trip-status-toggle fa fa-stop" data-id="6681470c-91ce-eb96-c9be-8e89ca941e9d" data-trip-status="1"></span></td>
</tr>
<tr class="steps-container" data-steps-for="6681470c-91ce-eb96-c9be-8e89ca941e9d" style="display: none;">
<td colspan="6" class="no-padding"></td>
</tr>
</tbody>
</table>
</div>
</div>
<br>
</div>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript" src="/js/bundle.min.js"></script>
</body>
</html>
Se eu aplicar uma largura de 100% à classe .table-responsive, a própria tabela terá 100% de largura, mas os elementos filhos (TBODY, TR etc.) ainda serão estreitos.
fonte
table-responsive
classe como um invólucro remete ao Bootstrap 3 ...? Ainda bem que existe uma solução por agora! Bootstrap 4 Alpha ;-)Esta solução funcionou para mim:
basta adicionar outra classe em seu elemento de tabela:
w-100 d-block d-md-table
então seria:
<table class="table table-responsive w-100 d-block d-md-table">
para bootstrap 4
w-100
defina a largura para 100%d-block
(display: block) ed-md-table
(display: table on min-width: 576px)Bootstrap 4 exibir docs
fonte
<table class="table table-responsive-md">
?Se você estiver usando a V4.1, e de acordo com seus documentos, não atribua .table-responsive diretamente à tabela. A tabela deve ser .table e se você quiser que seja rolável horizontalmente (responsiva), adicione-a dentro de um contêiner responsivo .table (a
<div>
, por exemplo).fazendo isso, nenhum css extra é necessário.
No código do OP, .table-responsive pode ser usado junto com .col-md-12 na parte externa.
fonte
Por algum motivo, a tabela responsiva em particular não se comporta como deveria. Você pode consertar eliminando
display:block;
Posso registrar um relatório de bug.
Editar:
É um bug existente.
fonte
Nenhuma dessas respostas está funcionando (data de hoje, 9 de dezembro de 2018). A resolução correta aqui é adicionar .table-responsive-sm à sua tabela:
Isso se aplica ao aspecto de capacidade de resposta apenas para a visualização SM (móvel). Assim, na visualização móvel, você obtém a rolagem conforme desejado e em visualizações maiores a tabela não responde e, portanto, é exibida em largura total, conforme desejado.
Documentos: https://getbootstrap.com/docs/4.0/content/tables/#breakpoint-specific
fonte
A solução compatível com a v4 do framework é definir o ponto de interrupção adequado. Em vez de usar .table-responsive, você deve ser capaz de usar .table-responsive-sm (para ser responsivo apenas em dispositivos pequenos)
Você pode usar qualquer um dos endpoints disponíveis: table-responsive {-sm | -md | -lg | -xl}
fonte
Isso ocorre porque a
.table-responsive
classe adiciona a propriedadedisplay: block
ao seu elemento, o que o altera do anteriordisplay: table
.Substitua esta propriedade de volta
display: table
em sua própria folha de estiloNota: certifique-se de que este estilo seja executado após o código de bootstrap para que ele seja sobrescrito.
fonte
É causado pela
table-responsive
classe dar à tabela uma propriedade dedisplay:block
, o que é estranho porque isso sobrescreve astable
classes originaisdisplay:table
e é por isso que a tabela encolhe quando você adicionatable-responsive
.O mais provável é que o bootstrap 4 ainda esteja em desenvolvimento. Você está seguro para sobrescrever esta propriedade com sua própria classe que define
display:table
e isso não afetará a capacidade de resposta da tabela.por exemplo
fonte
Levando em consideração as outras respostas eu faria algo assim, obrigado!
fonte
basta embrulhar a tabela com .table-responsive {-sm | -md | -lg | -xl}
por exemplo
tabelas de bootstrap 4
fonte
Descobri que usar a classe responsiva à tabela recomendada em um wrapper ainda faz com que as tabelas responsivas encolham (surpreendentemente) horizontalmente:
A solução para mim foi criar os seguintes pontos de interrupção de mídia e classes para evitá-lo:
Então, posso adicionar a classe apropriada ao meu elemento de tabela. Por exemplo:
Aqui, o wrapper define a largura em 100% para grande e maior por Bootstrap. Com a classe table-lg aplicada ao elemento da tabela, a largura da tabela também é definida como 100% para grande e maior, mas definida como 992px para média e menor. As classes table-xs, table-sm, table-md e table-xl funcionam da mesma maneira.
fonte
Para Bootstrap 4.x, use os utilitários de exibição:
w-100 d-print-block d-print-table
Uso :
fonte
Parece que o elemento "sr-only" e seus estilos dentro da tabela são o que está causando esse bug. Pelo menos eu tive o mesmo problema e depois de meses batendo a cabeça contra a parede foi isso que determinamos que era a causa, embora ainda não entenda o porquê. Adicionar
left:0
aos estilos "somente sr" corrigiu isso.fonte