Eu tenho usado word-wrap: break-word
para quebrar o texto em div
s e span
s. No entanto, parece não funcionar nas células da tabela. Eu tenho uma tabela definida como width:100%
, com uma linha e duas colunas. O texto nas colunas, embora com o estilo acima word-wrap
, não quebra. Faz com que o texto ultrapasse os limites da célula. Isso acontece no Firefox, Google Chrome e Internet Explorer.
Aqui está a aparência da fonte:
td {
border: 1px solid;
}
<table style="width: 100%;">
<tr>
<td>
<div style="word-wrap: break-word;">
Looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong word
</div>
</td>
<td><span style="display: inline;">Short word</span></td>
</tr>
</table>
A palavra longa acima é maior que os limites da minha página, mas não quebra com o HTML acima. Eu tentei as sugestões abaixo de adicionar text-wrap:suppress
e text-wrap:normal
, mas também não ajudaram.
html
css
html-table
psychotik
fonte
fonte
white-space: pre-wrap
developer.mozilla.org/en-US/docs/Web/CSS/white-spaceRespostas:
O seguinte funciona para mim no Internet Explorer. Observe a adição do
table-layout:fixed
atributo CSSfonte
<colgroup>
isso, consertou isso para mim.ou
fonte
<span>
.Word-wrap
vai quebrar palavras apenas quando necessáriotable-layout: fixed;
.Um tiro no escuro, mas verifique com o Firebug (ou similar) que você não está herdando acidentalmente a seguinte regra:
Isso pode substituir seu comportamento de quebra de linha especificado.
fonte
white-space:normal;
Acontece que não há uma boa maneira de fazer isso. O mais próximo que cheguei foi adicionar "overflow: hidden;" para a div ao redor da mesa e perdendo o texto. A solução real parece ser abandonar a mesa. Usando divs e posicionamento relativo, consegui o mesmo efeito, menos o legado de
<table>
ATUALIZAÇÃO DE 2015: Isto é para pessoas como eu que querem esta resposta. Após 6 anos, isso funciona, obrigado a todos os colaboradores.
fonte
Como mencionado, colocar o texto
div
quase funciona. Você apenas precisa especificar owidth
dediv
, o que é bom para layouts estáticos.Isso funciona no FF 3.6, IE 8, Chrome.
fonte
min-width: 100%
juntowidth
para garantir que adiv
célula inteira ocupe.Long,Long,Long,Long,Long
. Quero quebrar isso depois de qualquer vírgula (,).Solução alternativa que usa overflow-wrap e funciona bem com layout de tabela normal + largura da tabela 100%
https://jsfiddle.net/krf0v6pw/
HTML
CSS
Benefícios:
overflow-wrap:break-word
vez deword-break:break-all
. O que é melhor porque ele tenta quebrar primeiro os espaços e corta a palavra apenas se a palavra for maior que seu contêiner.table-layout:fixed
necessário. Use seu dimensionamento automático regular.width
ou fixomax-width
em pixels. Defina%
o pai, se necessário.Testado em FF57, Chrome62, IE11, Safari11
fonte
Mude seu código
para
Exemplo
fonte
break-word
em primeiro lugar.Problema com
é que não funcionará tão bem quando o texto tiver alguns espaços, por exemplo
Se a palavra
andthenlongerwithoutspaces
couber na célula da tabela em uma linha, maslong text with andthenlongerwithoutspaces
não, a palavra longa será dividida em duas, em vez de ser quebrada.Solução alternativa: insira U + 200B ( ZWSP ), U + 00AD ( hífen suave ) ou U + 200C ( ZWNJ ) em cada palavra longa após cada, digamos, 20 caracteres (no entanto, consulte o aviso abaixo):
Aviso : a inserção de caracteres adicionais de tamanho zero não afeta a leitura. No entanto, isso afeta o texto copiado na área de transferência (é claro que esses caracteres também são copiados). Se o texto da área de transferência for usado posteriormente em alguma função de pesquisa no aplicativo Web ... a pesquisa será interrompida. Embora essa solução possa ser vista em alguns aplicativos da web conhecidos, evite se possível.
Aviso : ao inserir caracteres adicionais, você não deve separar vários pontos de código no grafema. Consulte https://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries para obter mais informações.
fonte
é
pode ser escrito como dois pontos de código). Provavelmente realmente queremos dizer "grafemas", mas não conheço nenhuma linguagem que torne trivial passar por cima delas.Confira esta demonstração
Aqui está o link para ler
fonte
break-all
fará com que o navegador ignore completamente as quebras de palavras ao decidir onde colocar as quebras de linha, com o efeito de que, mesmo que seu celular contenha prosa normal sem palavras muito longas, você terminará com quebras de linha no meio das palavras. Isso geralmente é indesejável.Testado no IE 8 e Chrome 13.
Isso faz com que a tabela caiba na largura da página e cada coluna ocupe 50% da largura.
Se você preferir que a primeira coluna ocupe mais da página, adicione a
width: 80%
aotd
exemplo a seguir, substituindo 80% pela porcentagem de sua escolha.fonte
A única coisa que precisa ser feita é adicionar largura ao interior
<td>
ou ao<div>
interior,<td>
dependendo do layout que você deseja obter.por exemplo:
ou
fonte
A resposta que ganhou a recompensa está correta, mas não funcionará se a primeira linha da tabela tiver uma célula mesclada / unida (todas as células têm largura igual).
Nesse caso, você deve usar as tags
colgroup
ecol
para exibi-lo corretamente:fonte
fonte
p
em uma célula da tabela que não tenha uma largura de pixel fixa quase certamente acabará com op
transbordamento ou falha no preenchimento da célula da tabela.Parece que você precisa definir
word-wrap:break-word;
um elemento de bloco (div
), com largura (não relativa) especificada. Ex:ou usando de
word-break:break-all
acordo com a sugestão de Abhishek Simon.fonte
Isso funciona para mim:
E o atributo da tabela é:
fonte
table-layout: fixed
, mas já existe uma resposta muito mais antiga sugerindo isso, então essa resposta não adiciona nenhuma informação nova.Se você não precisar de uma borda da tabela, aplique o seguinte:
fonte
table-layout: fixed
; este não adiciona nada de novo à página.Encontrei uma solução que parece funcionar no Firefox, Google Chrome e Internet Explorer 7-9. Para fazer um layout de tabela de duas colunas com texto longo de um lado. Eu procurei por todo o problema semelhante, e o que funcionou em um navegador quebrou o outro, ou adicionar mais tags a uma tabela parece uma codificação incorreta.
Eu não usei uma tabela para isso. DL DT DD para o resgate. Pelo menos para corrigir um layout de duas colunas, isso é basicamente uma configuração de glossário / dicionário / significado de palavras.
E algum estilo genérico.
Usando quebra de linha flutuante e margem esquerda, consegui exatamente o que precisava. Apenas pensei em compartilhar isso com outras pessoas, talvez isso ajude alguém com um layout de estilo de definição de duas colunas, com problemas para conseguir que as palavras sejam agrupadas.
Tentei usar quebra de linha na célula da tabela, mas funcionou apenas no Internet Explorer 9 (e no Firefox e Google Chrome, é claro), principalmente tentando corrigir o navegador Internet Explorer quebrado aqui.
fonte
As tabelas são agrupadas por padrão, portanto, verifique se a exibição das células da tabela é
table-cell
:fonte
style = "layout da tabela: fixo; largura: 98%; quebra de linha: quebra de palavra"
Demo - http://jsfiddle.net/Ne4BR/749/
Isso funcionou muito bem para mim. Eu tinha links longos que levariam a tabela a exceder 100% nos navegadores da web. Testado no IE, Chrome, Android e Safari.
fonte
table-layout: fixed
".Uma solução que funciona com o Google Chrome e Firefox (não testada no Internet Explorer) é definir
display: table-cell
como um elemento de bloco.fonte
Você pode tentar isso se for adequado ...
Coloque uma área de texto dentro do seu td e desative-a com a cor de fundo branca e defina seu número de linhas.
fonte