119 votes

Les tables réactives Bootstrap 4 ne prendront pas 100% de largeur

Je suis la construction d'une application web en utilisant Bootstrap 4 et en cours d'exécution dans certains problèmes bizarres. Je veux utiliser Bootstrap de table du réactif de classe pour permettre le défilement horizontal des tables sur des appareils mobiles. Sur les périphériques de bureau, la table doit prendre 100% de la DIV contenant la largeur.

Dès que j'ai appliquer le .tableau sensible de la classe à ma table, la table se rétrécit à l'horizontale et ne prend plus de 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="stackoverflow.com/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 je demande 100% de la largeur de l' .tableau sensible de la classe, il rend le tableau lui-même à 100%, mais que les éléments d'enfant (TR, TR, etc.) sont toujours étroites.

200voto

Ce qui suit ne fonctionnera pas. Cela cause un autre problème. Il fera maintenant la largeur à 100% mais il ne sera pas réactif sur les plus petits appareils:

 .table-responsive {
    display: table;
}
 

Toutes ces réponses ont introduit un autre problème en recommandant display: table; . La seule solution à l'heure actuelle est de l'utiliser comme un wrapper:

 <div class="table-responsive">
  <table class="table">
...
 </table>
</div>
 

58voto

Faytraneozter Points 420

Cette solution a fonctionné pour moi:

ajoutez simplement une autre classe à votre élément de table: w-100 d-block d-md-table

donc ce serait: <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) et d-md-table (affichage: table sur min-width: 576px)

Documents d'affichage Bootstrap 4

25voto

Marcelo Myara Points 447

Si vous utilisez V4.1, et en fonction de leurs docs, ne pas affecter .tableau réagissant directement à la table. La table doit être .table et si vous voulez qu'il soit défilement horizontal (responsive) l'ajouter à l'intérieur d'un .tableau sensibles conteneur ( <div>, par exemple).

Responsive tables tables de faire défiler horizontalement avec facilité. Faire une table réactive à travers toutes les fenêtres en les enveloppant d'un .table avec .table de répondre.

<div class="table-responsive">
  <table class="table">
  ...
  </table>
</div>

le faire, pas de supplément de css est nécessaire.

Dans le cas des OP code .table-réactif peut être utilisé avec la avec la .col-md-12 à l'extérieur .

6voto

Serg Chernata Points 163

Pour une raison quelconque, la table responsive en particulier ne se comporte pas comme il se doit. Vous pouvez le corriger en éliminant display:block;

 .table-responsive {
    display: table;
}
 

Je peux déposer un rapport de bogue.

Modifier:

C'est un bug existant.

3voto

Rubén_ic Points 67

La solution conforme à la v4 du framework consiste à définir le point d'arrêt approprié. Plutôt que d'utiliser .table-responsive, vous devriez pouvoir utiliser .table-responsive-sm (pour répondre simplement sur de petits appareils)

Vous pouvez utiliser n’importe quel des points de terminaison disponibles: table-responsive {-sm | -md | -lg | -xl}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X