Estou tentando impedir que uma tabela com largura declarada explicitamente transborde fora de seu pai div
. Presumo que posso fazer isso de alguma forma usando max-width
, mas não consigo fazer isso funcionar.
O código a seguir (com uma janela muito pequena) causará isso:
<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>
A linha vermelha é a borda direita do div
e, se você diminuir a janela do navegador, verá que a tabela não cabe nela.
html
css
html-table
waiwai933
fonte
fonte
<center>
. Ele está obsoleto há anos. Além disso, você já tem umalign="center"
na sua mesa.Respostas:
Vire ao contrário fazendo:
Também o aconselharia a:
center
tag (ela está obsoleta)width
,bgcolor
atributos, defini-los por CSS (width
ebackground-color
)(assumindo que você pode controlar a tabela que foi renderizada)
fonte
Você pode evitar que as tabelas se expandam além de seu div pai usando
table-layout:fixed
.O CSS abaixo fará com que suas tabelas se expandam para a largura da div que as cerca.
Eu encontrei esse truque aqui .
fonte
<col>
s ou nos s da primeira linha<td>
(em vez de deixar fluir com base no tamanho do texto). Do MDN: "fixo: as larguras das tabelas e colunas são definidas pelas larguras dos elementos da tabela e da coluna ou pela largura da primeira linha de células. As células nas linhas subsequentes não afetam as larguras das colunas."Uma solução bruta é definir
display: table
o div que o contém.fonte
Tentei todas as soluções mencionadas acima, mas não funcionou. Tenho 3 tabelas uma abaixo da outra. O último transbordou. Consertei usando:
Para o IE11 no modo de borda, você precisa definir isso para
word-break:break-all
fonte
No começo, usei o método de James Lawruk. No entanto, isso mudou todas as larguras do
td
's.A solução para mim foi usar
white-space: normal
nas colunas (que foi definido comowhite-space: nowrap
). Dessa forma, o texto sempre vai quebrar. O usoword-wrap: break-word
garantirá que tudo será interrompido quando necessário, mesmo no meio de uma palavra.O CSS terá a seguinte aparência:
Essa pode nem sempre ser a solução desejável, pois
word-wrap: break-word
pode tornar suas palavras ilegíveis na tabela. No entanto, manterá sua mesa com a largura certa.fonte
Tentei quase tudo acima, mas não funcionou para mim ... O seguinte funcionou
Isso deve ser adicionado ao div pai (contêiner da tabela).
fonte
Aplique o estilo acima ao div pai.
fonte
Tem um
width="400"
na mesa, retire e vai funcionar ...fonte