Aqui está o mesmo problema .
É preciso conjunto table-layout:fixed
e uma largura adequada no elemento de mesa, bem como overflow:hidden
e white-space: nowrap
sobre as células da tabela.
Exemplos
Colunas de largura fixa
A largura da tabela deve ser a mesma (ou menor) que a (s) célula (s) de largura fixa.
Com uma coluna de largura fixa:
* {
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>
Com várias colunas de largura fixa:
* {
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>
Colunas de largura fixa e fluida
Uma largura para a tabela deve ser definida , mas qualquer largura extra é simplesmente obtida pela (s) célula (s) do fluido.
Com várias colunas, largura fixa e largura do 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 até adicioná-lo ao DIV não resolve o problema.Aplique CSS
table-layout:fixed;
(e às vezeswidth:<any px or %>
) à TABELA ewhite-space: nowrap; overflow: hidden;
estilo no TD. Em seguida, defina as larguras CSS nos elementos corretos da célula ou coluna.Significativamente, as larguras das colunas da tabela de layout fixo são determinadas pelas larguras das células na primeira linha da tabela. Se houver elementos TH na primeira linha e as larguras forem aplicadas ao TD (e não ao TH), a largura se aplicará apenas ao conteúdo do TD (o espaço em branco e o excesso podem ser ignorados); as colunas da tabela serão distribuídas uniformemente, independentemente da largura do TD definida (porque não existem larguras especificadas [no TH na primeira linha]) e as colunas terão [calculadas] larguras iguais; a tabela não recalcula a largura da coluna com base na largura do TD nas linhas subseqüentes. Defina a largura nos primeiros elementos da célula que a tabela encontrará.
Como alternativa, a maneira mais segura de definir as larguras das colunas é usar tags
<COLGROUP>
e<COL>
na tabela com a largura CSS definida em cada COL de largura fixa. O CSS relacionado à largura da célula é melhor quando a tabela conhece as larguras da coluna com antecedência.fonte
Eu não estou familiarizado com o problema específico, mas você pode colocar um div, etc dentro do td e definir um excesso nele.
fonte
Bem, aqui está uma solução para você, mas eu realmente não entendo por que funciona:
Ou seja, agrupando o conteúdo da célula em uma div.
fonte
overflow:hidden
pode ser removidotd
e a largura do arquivodiv
pode ser configurada para 100%, para que ele funcione com qualquertd
largura (incluindo as de tamanho automático!)A melhor solução é colocar uma div na célula da tabela com largura zero. As células da tabela Tbody herdarão suas larguras das larguras definidas no cabeçalho. Posição: margem relativa e negativa deve funcionar!
Aqui está uma captura de tela: https://flic.kr/p/nvRs4j
fonte
Você terá que definir os atributos de estilo da tabela:
width
etable-layout: fixed;
deixar o 'overflow: hidden;' atributo funciona corretamente.Imo, isso funciona melhor do que usar divs com o
width
atributo style, especialmente ao usá-lo para cálculos de redimensionamento dinâmico, a tabela terá um DOM mais simples que facilita a manipulação, pois não são necessárias correções no preenchimento e na margemComo um extra, você não precisa definir a largura para todas as células, mas apenas para as células na primeira linha.
Como isso:
fonte
Acabei de ter um problema semelhante e tive que usar o
<div>
interior<td>
primeiro (a solução de John MacIntyre não funcionou para mim por vários motivos).Observe que esse
<td><div>...</div></td>
posicionamento não é válido para uma div. Em vez disso, estou usando um<span>
comdisplay:block;
set. Ele valida bem agora e funciona.fonte
Solução mais fácil e simples que funciona:
fonte
para simplificar, proponho colocar uma área de texto dentro do td que gerencia automaticamente o overflow
<td><textarea autofocus>$post_title</textarea></td>
precisa melhorar
fonte
exibe 123456
fonte