Estoy creando una aplicación web usando Bootstrap 4 y me encuentro con algunos problemas extraños. Quiero utilizar la clase de respuesta de tabla de Bootstrap para permitir el desplazamiento horizontal de las tablas en dispositivos móviles. En los dispositivos de escritorio, la mesa debe ocupar el 100% del ancho del DIV contenedor.
Tan pronto como aplico la clase .table-responsive a mi tabla, la tabla se encoge horizontalmente y ya no ocupa el 100% del ancho. ¿Algunas ideas?
Aquí está mi marcado:
<!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 aplico un ancho del 100% a la clase .table-responsive, hace que la tabla tenga un ancho del 100% pero los elementos secundarios (TBODY, TR, etc.) siguen siendo estrechos.
fuente
table-responsive
clase como envoltorio se remonta a Bootstrap 3 ...? ¡Me alegro de que haya una solución por ahora! Bootstrap 4 Alpha ;-)Esta solución funcionó para mí:
simplemente agregue otra clase en su elemento de tabla:
w-100 d-block d-md-table
por lo que sería:
<table class="table table-responsive w-100 d-block d-md-table">
para bootstrap 4,
w-100
establezca el ancho en 100%d-block
(pantalla: bloque) yd-md-table
(pantalla: tabla en ancho mínimo: 576px)Documentos de pantalla de Bootstrap 4
fuente
<table class="table table-responsive-md">
?Si está utilizando V4.1, y de acuerdo con sus documentos, no asigne .table-responsive directamente a la tabla. La tabla debe ser .table y si desea que sea desplazable horizontalmente (receptiva) agréguela dentro de un contenedor .table-responsive (a
<div>
, por ejemplo).Al hacer eso, no se necesita CSS adicional.
En el código del OP, .table-responsive se puede usar junto con .col-md-12 en el exterior.
fuente
Por alguna razón, la tabla receptiva en particular no se comporta como debería. Puede parchearlo deshaciéndose de
display:block;
Puedo presentar un informe de error.
Editar:
Es un error existente.
fuente
Ninguna de estas respuestas funciona (fecha de hoy 9 de diciembre de 2018). La resolución correcta aquí es agregar .table-responsive-sm a su tabla:
Esto aplica el aspecto de capacidad de respuesta solo a la vista SM (móvil). Entonces, en la vista móvil, obtiene el desplazamiento como desee y en vistas más grandes, la tabla no responde y, por lo tanto, se muestra en todo el ancho, como se desea.
Documentos: https://getbootstrap.com/docs/4.0/content/tables/#breakpoint-specific
fuente
La solución compatible con la versión 4 del marco es establecer el punto de interrupción adecuado. En lugar de usar .table-responsive, debería poder usar .table-responsive-sm (para responder solo en dispositivos pequeños)
Puede usar cualquiera de los extremos disponibles: table-responsive {-sm | -md | -lg | -xl}
fuente
Eso es porque la
.table-responsive
clase agrega la propiedaddisplay: block
a su elemento que la cambia del anteriordisplay: table
.Reemplace esta propiedad
display: table
en su propia hoja de estiloNota: asegúrese de que este estilo se ejecute después de su código de arranque para que se anule.
fuente
Se debe a que la
table-responsive
clase le da a la tabla una propiedad dedisplay:block
, lo cual es extraño porque esto sobrescribe lastable
clases originalesdisplay:table
y es por eso que la tabla se encoge cuando agregatable-responsive
.Lo más probable es que se deba a que bootstrap 4 aún está en dev. Es seguro sobrescribir esta propiedad con su propia clase que establece
display:table
y no afectará la capacidad de respuesta de la tabla.p.ej
fuente
Teniendo en cuenta las otras respuestas, haría algo como esto, ¡gracias!
fuente
simplemente envuelva la tabla con .table-responsive {-sm | -md | -lg | -xl}
por ejemplo
bootstrap 4 tablas
fuente
Descubrí que el uso de la clase de respuesta de tabla recomendada en un contenedor todavía hace que las tablas de respuesta se reduzcan (sorprendentemente) horizontalmente:
La solución para mí fue crear los siguientes puntos de interrupción de medios y clases para evitarlo:
Luego puedo agregar la clase apropiada a mi elemento de tabla. Por ejemplo:
Aquí, el contenedor establece el ancho al 100% para mayor y mayor por Bootstrap. Con la clase table-lg aplicada al elemento de la tabla, el ancho de la tabla también se establece en 100% para grandes y mayores, pero se establece en 992px para medianos y pequeños. Las clases table-xs, table-sm, table-md y table-xl funcionan de la misma manera.
fuente
Para Bootstrap 4.x use las utilidades de visualización:
w-100 d-print-block d-print-table
Uso :
fuente
Parece que el elemento "solo sr" y sus estilos dentro de la tabla son los que están causando este error. Al menos tuve el mismo problema y después de meses de golpearnos la cabeza contra la pared, eso es lo que determinamos que era la causa, aunque todavía no entiendo por qué. Agregar
left:0
a los estilos "solo sr" lo solucionó.fuente