Como impedir que o texto em uma célula da tabela seja quebrado


285

Alguém sabe como posso impedir que o texto em uma célula da tabela seja quebrado? Isso é para o cabeçalho de uma tabela e o cabeçalho é muito mais longo que os dados abaixo, mas eu preciso que ele seja exibido em apenas uma linha. Tudo bem se a coluna for muito larga.

O HTML da minha tabela (simplificada) fica assim:

<table>
  <thead>
    <tr>
      <th>
        <div>Really long column heading</div>
      </th>
      <th>
        <div>Really long column heading</div>
      </th>
      <th>
        <div>Really long column heading</div>
      </th>
      <th>
        <div>Really long column heading</div>
      </th>
      <th>
        <div>Really long column heading</div>
      </th>
      <th>
        <div>Really long column heading</div>
      </th>
      <th>
        <div>Really long column heading</div>
      </th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
        <div>data</div>
      </td>
      <td>
        <div>data</div>
      </td>
      <td>
        <div>data</div>
      </td>
      <td>
        <div>data</div>
      </td>
      <td>
        <div>data</div>
      </td>
      <td>
        <div>data</div>
      </td>
      <td>
        <div>data</div>
      </td>
    </tr>
  </tbody>
</table>

O cabeçalho em si é envolvido em uma div dentro da thtag por motivos pertencentes ao javascript na página.

A tabela está saindo com os títulos agrupados em várias linhas. Isso parece acontecer apenas quando a tabela é suficientemente larga, pois o navegador está tentando evitar a rolagem horizontal. No meu caso, porém, quero rolagem horizontal.

Alguma ideia?

Respostas:


485

Dê uma olhada na white-spacepropriedade, usada assim:

th {
    white-space: nowrap;
}

Isso forçará o conteúdo de <th>a ser exibido em uma linha.

Na página vinculada, aqui estão as várias opções para white-space:

normal
Esse valor direciona os agentes do usuário a recolher seqüências de espaços em branco e interromper linhas conforme necessário para preencher caixas de linhas.

pre
Esse valor evita que os agentes do usuário colapsem sequências de espaço em branco. As linhas são quebradas apenas em caracteres de nova linha preservados.

nowrap
Esse valor recolhe o espaço em branco como 'normal', mas suprime as quebras de linha no texto.

pre-wrap
Esse valor evita que os agentes do usuário colapsem sequências de espaço em branco. As linhas são quebradas nos caracteres de nova linha preservados e, conforme necessário, para preencher as caixas de linha.

pré-linha
Esse valor direciona os agentes do usuário a recolher sequências de espaço em branco. As linhas são quebradas nos caracteres de nova linha preservados e, conforme necessário, para preencher as caixas de linha.


8
não funciona para o campo de entrada e botão na mesma célula. coloca aleatoriamente abaixo.
Doomsknight

16
TableO elemento deve ter table-layout:fixed;para que isso funcione.
Daniloquio 14/08/12

@Doomsknight Você encontrou uma maneira de alcançá-lo com um campo de entrada e outro elemento na mesma célula?
loveNoHate

espaço em branco: pré; era o que eu precisava como -28,04 estava enrolando entre o - e 28.04
Brent

1
@Doomsknight Eu tive o mesmo problema com a caixa de seleção e resolvê-lo através da actualização do CSS cominput { display: inline; }
Programster



6

Cheguei a esta pergunta que precisava impedir a quebra de texto no hífen.

Foi assim que eu fiz:

<td><nobr>Table Text</nobr></td>

Referência:

Como evitar quebras de linha em hífens em todos os navegadores


Vale a pena notar que a nobrtag é não-padrão, como fora apontado na resposta aceita ligada nesta resposta: stackoverflow.com/a/8755071/4257
pkaeding

Muito bem. Seu ponto é bem recebido. Li todos esses comentários, observei a experiência dos comentaristas correspondentes e fiz uma chamada de julgamento. O hífen é um pouco complicado. (Nota: a questão é ligada em seu comentário é o mesmo que eu ligado na minha resposta)
cssyphus

Sim, era para ser a mesma pergunta. Eu só queria ter certeza de que a advertência foi publicada aqui, caso alguém encontrasse essa resposta no futuro e não se desse ao trabalho de ler a referência vinculada.
precisa saber é

1

Para uso com a interface do usuário React / Material

Caso você esteja aqui imaginando como isso funciona para a interface do usuário do material ao criar no React, veja como você adiciona isso ao seu <TableHead>componente:

<TableHead style={{ whiteSpace: 'nowrap'}}>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.