Estoy tratando de evitar que una tabla que tiene un ancho declarado explícitamente se desborde fuera de su padre div
. Supongo que puedo hacer esto de alguna manera usando max-width
, pero parece que no puedo hacer que esto funcione.
El siguiente código (con una ventana muy pequeña) provocará esto:
<style type="text/css">
#middlecol {
width: 45%;
border-right:2px solid red;
}
#middlecol table {
max-width:100% !important;
}
</style>
<div id="middlecol">
<center>
<table width="400" cellpadding="3" cellspacing="0" border="0" align="center">
<tr>
<td bgcolor="#DDFFFF" align="center" colspan="2">
<strong>Notification!</strong>
</td>
<tr>
<td width="50">
<img src="http://www.example.com/img.png" width="50" height="50" alt="" border="0">
</td>
<td>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</td>
</tr>
</table>
</center>
</div>
La línea roja es el borde derecho del div
, y si hace que la ventana de su navegador sea pequeña, verá que la tabla no encaja en ella.
html
css
html-table
waiwai933
fuente
fuente
<center>
. Ha estado en desuso durante años. Además, ya tienes unaalign="center"
en tu mesa.Respuestas:
Dale la vuelta haciendo:
También te aconsejaría que:
center
etiqueta (está obsoleta)width
,bgcolor
atributos, configúrelos por CSS (width
ybackground-color
)(asumiendo que puede controlar la tabla que fue renderizada)
fuente
Puede evitar que las tablas se expandan más allá de su div principal usando
table-layout:fixed
.El CSS a continuación hará que sus tablas se expandan al ancho del div que lo rodea.
Encontré este truco aquí .
fuente
<col>
la primera fila<td>
(en lugar de dejar que fluya según el tamaño del texto). De MDN: "fijo: los anchos de tabla y columna se establecen por el ancho de los elementos de tabla y columna o por el ancho de la primera fila de celdas. Las celdas en filas subsiguientes no afectan el ancho de columna".Una burda solución es establecer
display: table
el div contenedor.fuente
Probé todas las soluciones mencionadas anteriormente, luego no funcionó. Tengo 3 tablas una debajo de la otra. El último se desbordó. Lo arreglé usando:
Para IE11 en modo de borde, debe configurarlo en
word-break:break-all
fuente
Al principio utilicé el método de James Lawruk. Sin embargo, esto cambió todos los anchos de los
td
.La solución para mí fue usar
white-space: normal
en las columnas (que estaba configurado enwhite-space: nowrap
). De esta forma el texto siempre se romperá. El usoword-wrap: break-word
asegurará que todo se rompa cuando sea necesario, incluso a la mitad de una palabra.El CSS se verá así entonces:
Es posible que esta no sea siempre la solución deseable, ya que
word-wrap: break-word
podría hacer que sus palabras en la tabla sean ilegibles. Sin embargo, mantendrá su mesa con el ancho correcto.fuente
Probé casi todo lo anterior pero no funcionó para mí ... Lo siguiente sí
Esto se agregará en el div principal (contenedor de la tabla).
fuente
Aplica el estilo de arriba al div padre.
fuente
Hay un
width="400"
sobre la mesa, quítalo y funcionará ...fuente