Je crée une application Web en utilisant Bootstrap 4 et je rencontre des problèmes étranges. Je souhaite utiliser la classe sensible aux tables de Bootstrap pour permettre le défilement horizontal des tables sur les appareils mobiles. Sur les appareils de bureau, la table doit occuper 100% de la largeur du DIV contenant.
Dès que j'applique la classe .table-responsive à ma table, la table se rétrécit horizontalement et ne prend plus 100% de la largeur. Des idées?
Voici mon balisage:
<!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>
Si j'applique une largeur de 100% à la classe .table-responsive, cela rend la table elle-même une largeur de 100% mais les éléments enfants (TBODY, TR, etc.) sont toujours étroits.
la source
table-responsive
classe comme wrapper rappelle Bootstrap 3 ...? Heureux qu'il y ait une solution pour l'instant! Bootstrap 4 Alpha ;-)Cette solution a fonctionné pour moi:
ajoutez simplement une autre classe dans votre élément de table:
w-100 d-block d-md-table
ce serait donc:
<table class="table table-responsive w-100 d-block d-md-table">
pour bootstrap 4,
w-100
définissez la largeur sur 100%d-block
(affichage: bloc) etd-md-table
(affichage: tableau sur largeur min: 576px)Documents d'affichage Bootstrap 4
la source
<table class="table table-responsive-md">
?Si vous utilisez V4.1, et selon leurs documents, n'attribuez pas .table-responsive directement à la table. Le tableau doit être .table et si vous voulez qu'il puisse faire défiler horizontalement (réactif), ajoutez-le dans un conteneur .table-responsive (a
<div>
, par exemple).pour ce faire, aucun css supplémentaire n'est nécessaire.
Dans le code de l'OP, .table-responsive peut être utilisé avec le .col-md-12 à l'extérieur.
la source
Pour une raison quelconque, la table responsive en particulier ne se comporte pas comme elle le devrait. Vous pouvez le patcher en vous débarrassant de
display:block;
Je peux déposer un rapport de bogue.
Éditer:
C'est un bug existant.
la source
Aucune de ces réponses ne fonctionne (date d'aujourd'hui 9 décembre 2018). La résolution correcte ici est d'ajouter .table-responsive-sm à votre table:
Ceci applique l'aspect réactivité uniquement à la vue SM (mobile). Ainsi, en vue mobile, vous obtenez le défilement comme vous le souhaitez et dans des vues plus grandes, le tableau n'est pas réactif et donc affiché en pleine largeur, comme vous le souhaitez.
Docs: https://getbootstrap.com/docs/4.0/content/tables/#breakpoint-specific
la source
La solution conforme à la v4 du framework est de définir le point d'arrêt approprié. Plutôt que d'utiliser .table-responsive, vous devriez pouvoir utiliser .table-responsive-sm (pour être juste réactif sur les petits appareils)
Vous pouvez utiliser n'importe lequel des points de terminaison disponibles: table-responsive {-sm | -md | -lg | -xl}
la source
C'est parce que la
.table-responsive
classe ajoute la propriétédisplay: block
à votre élément, ce qui la change par rapport au précédentdisplay: table
.Remplacer cette propriété
display: table
dans votre propre feuille de styleRemarque: assurez-vous que ce style s'exécute après votre code d'amorçage pour qu'il soit remplacé.
la source
Cela est dû au fait que la
table-responsive
classe attribue à la table une propriété dedisplay:block
, ce qui est étrange car cela écrase lestable
classes d'originedisplay:table
et c'est pourquoi la table se réduit lorsque vous ajouteztable-responsive
.Il est fort probable que le bootstrap 4 soit toujours en développement. Vous êtes sûr de remplacer cette propriété par votre propre classe qui définit
display:table
et cela n'affectera pas la réactivité de la table.par exemple
la source
En tenant compte des autres réponses, je ferais quelque chose comme ça, merci!
la source
enveloppez simplement la table avec .table-responsive {-sm | -md | -lg | -xl}
par exemple
bootstrap 4 tableaux
la source
J'ai trouvé que l'utilisation de la classe sensible aux tables recommandée dans un wrapper entraîne toujours (étonnamment) la réduction horizontale des tables réactives:
La solution pour moi était de créer les classes et points d'arrêt média suivants pour l'empêcher:
Ensuite, je peux ajouter la classe appropriée à mon élément de table. Par exemple:
Ici, le wrapper définit la largeur à 100% pour les grands et les plus grands par Bootstrap. Avec la classe table-lg appliquée à l'élément table, la largeur du tableau est également définie sur 100% pour les grands et les plus grands, mais sur 992px pour les moyens et les plus petits. Les classes table-xs, table-sm, table-md et table-xl fonctionnent de la même manière.
la source
Pour Bootstrap 4.x, utilisez les utilitaires d'affichage:
w-100 d-print-block d-print-table
Utilisation :
la source
Il semble que l'élément "sr-only" et ses styles à l'intérieur du tableau soient à l'origine de ce bogue. Au moins, j'ai eu le même problème et après des mois à nous cogner la tête contre le mur, c'est ce dont nous avons déterminé la cause, même si je ne comprends toujours pas pourquoi. L'ajout des
left:0
styles "sr uniquement" a corrigé le problème.la source