Aquí está el mismo problema .
Es necesario que ajuste table-layout:fixed
y una anchura adecuada en el elemento de la tabla, así como overflow:hidden
y white-space: nowrap
en las celdas de la tabla.
Ejemplos
Columnas de ancho fijo
El ancho de la tabla tiene que ser el mismo (o más pequeño) que las celdas de ancho fijo.
Con una columna de ancho fijo:
* {
box-sizing: border-box;
}
table {
table-layout: fixed;
border-collapse: collapse;
width: 100%;
max-width: 100px;
}
td {
background: #F00;
padding: 20px;
overflow: hidden;
white-space: nowrap;
width: 100px;
border: solid 1px #000;
}
<table>
<tbody>
<tr>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
</tr>
<tr>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
</tr>
</tbody>
</table>
Con múltiples columnas de ancho fijo:
* {
box-sizing: border-box;
}
table {
table-layout: fixed;
border-collapse: collapse;
width: 100%;
max-width: 200px;
}
td {
background: #F00;
padding: 20px;
overflow: hidden;
white-space: nowrap;
width: 100px;
border: solid 1px #000;
}
<table>
<tbody>
<tr>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
</tr>
<tr>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
</tr>
</tbody>
</table>
Columnas de ancho fijo y fluido
Se debe establecer un ancho para la tabla , pero las celdas de fluido simplemente toman cualquier ancho adicional.
Con múltiples columnas, ancho fijo y ancho de fluido:
* {
box-sizing: border-box;
}
table {
table-layout: fixed;
border-collapse: collapse;
width: 100%;
}
td {
background: #F00;
padding: 20px;
border: solid 1px #000;
}
tr td:first-child {
overflow: hidden;
white-space: nowrap;
width: 100px;
}
<table>
<tbody>
<tr>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
</tr>
<tr>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
<td>
This_is_a_terrible_example_of_thinking_outside_the_box.
</td>
</tr>
</tbody>
</table>
vertical-align:middle
e incluso agregarlo al DIV no soluciona el problema.Aplique CSS
table-layout:fixed;
(y a veceswidth:<any px or %>
) a la TABLA ywhite-space: nowrap; overflow: hidden;
estilo en TD. Luego establezca los anchos CSS en los elementos correctos de la celda o columna.Significativamente, los anchos de columna de la tabla de diseño fijo están determinados por los anchos de celda en la primera fila de la tabla. Si hay elementos TH en la primera fila, y los anchos se aplican a TD (y no a TH), entonces el ancho solo se aplica al contenido del TD (el espacio en blanco y el desbordamiento pueden ignorarse); las columnas de la tabla se distribuirán de manera uniforme independientemente del ancho TD establecido (porque no hay anchos especificados [en TH en la primera fila]) y las columnas tendrán anchos [calculados] iguales; la tabla no volverá a calcular el ancho de columna en función del ancho de TD en las filas posteriores. Establezca el ancho en los primeros elementos de celda que encontrará la tabla.
Por otra parte, y de la forma más segura de ancho de las columnas de ajuste es utilizar
<COLGROUP>
y<COL>
etiquetas en la tabla con el CSS ancho establecido en cada COL ancho fijo. El CSS relacionado con el ancho de celda funciona mejor cuando la tabla conoce de antemano los anchos de columna.fuente
No estoy familiarizado con el problema específico, pero podría pegar un div, etc. dentro del td y configurar el desbordamiento en eso.
fuente
Bueno, aquí hay una solución para ti, pero realmente no entiendo por qué funciona:
A saber, envolviendo el contenido de la celda en un div.
fuente
overflow:hidden
se puede eliminartd
y el ancho deldiv
se puede establecer al 100% para que funcione con cualquiertd
ancho (¡incluidos los de tamaño automático!)La mejor solución es poner un div en la celda de la tabla con ancho cero. Las celdas de la tabla Tbody heredarán sus anchos de los anchos definidos thead. Posición: margen relativo y negativo debería hacer el truco!
Aquí hay una captura de pantalla: https://flic.kr/p/nvRs4j
fuente
Tendrá que establecer los atributos de estilo de la tabla:
width
ytable-layout: fixed;
dejar que el 'desbordamiento: oculto'; El atributo funciona correctamente.Imo esto funciona mejor que usar divs con el
width
atributo de estilo, especialmente cuando se usa para cálculos de cambio de tamaño dinámico, la tabla tendrá un DOM más simple que facilita la manipulación porque no se requieren correcciones para el relleno y el margenComo extra, no tiene que establecer el ancho para todas las celdas sino solo para las celdas en la primera fila.
Me gusta esto:
fuente
Acabo de tener un problema similar y tuve que usar el
<div>
interior<td>
al principio (la solución de John MacIntyre no me funcionó por varias razones).Sin embargo,
<td><div>...</div></td>
tenga en cuenta que no es una ubicación válida para un div, por lo que en su lugar estoy usando a<span>
condisplay:block;
set. Valida bien ahora y funciona.fuente
La solución más fácil y simple que funciona:
fuente
para simplificar, propongo poner un área de texto dentro del td que gestiona automáticamente el desbordamiento
<td><textarea autofocus>$post_title</textarea></td>
necesita ser mejorado
fuente
muestra 123456
fuente