Jak zapobiec zawijaniu tekstu w komórce tabeli


285

Czy ktoś wie, jak mogę zapobiec zawijaniu tekstu w komórce tabeli? To jest dla nagłówka tabeli, a nagłówek jest znacznie dłuższy niż dane w nim zawarte, ale muszę go wyświetlać tylko w jednym wierszu. W porządku, jeśli kolumna jest bardzo szeroka.

HTML mojej (uproszczonej) tabeli wygląda następująco:

<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>

Sam nagłówek jest zawinięty w div wewnątrz thtagu z powodów związanych z javascript na stronie.

Stół wychodzi z nagłówkami zawijanymi w wiele wierszy. Wydaje się, że dzieje się tak tylko wtedy, gdy stół jest wystarczająco szeroki, ponieważ przeglądarka próbuje uniknąć przewijania w poziomie. Jednak w moim przypadku chcę przewijanie w poziomie.

Jakieś pomysły?

Odpowiedzi:


486

Spójrz na white-spacewłaściwość, użytą w ten sposób:

th {
    white-space: nowrap;
}

Wymusi <th>to wyświetlenie zawartości w jednym wierszu.

Na połączonej stronie znajdują się różne opcje white-space:

normal
Ta wartość kieruje programy klienckie do zwijania sekwencji białych znaków i przerywania linii w razie potrzeby w celu wypełnienia pól linii.

pre
Ta wartość zapobiega zwijaniu się przez użytkownika sekwencji sekwencji białych znaków. Linie są łamane tylko przy zachowanych znakach nowej linii.

nowrap
Ta wartość zwija białe znaki jak dla „normalnego”, ale pomija łamanie linii w tekście.

pre-wrap
Ta wartość zapobiega zwijaniu się przez użytkownika sekwencji sekwencji białych znaków. Linie są przerywane przy zachowanych znakach nowej linii i, jeśli to konieczne, do wypełnienia pól linii.

pre-line
Ta wartość kieruje programy użytkownika do zwinięcia sekwencji białych znaków. Linie są przerywane przy zachowanych znakach nowej linii i, jeśli to konieczne, do wypełnienia pól linii.


8
nie działa dla pola wprowadzania i przycisku w tej samej komórce. losowo poniżej.
Doomsknight

16
Tableelement musi mieć table-layout:fixed;, aby to działało.
daniloquio,

@Doomsknight Czy udało Ci się to osiągnąć za pomocą pola wejściowego i innego elementu w tej samej komórce?
loveNoHate

biała spacja: przed; było to, czego potrzebowałem, ponieważ -28.04 zawijało między - a 28.04
Brent

1
@Doomsknight Miałem ten sam problem z polem wyboru i rozwiązałem go, aktualizując CSS za pomocąinput { display: inline; }
Programster

66
<th nowrap="nowrap">

lub

<th style="white-space:nowrap;">

lub

<th class="nowrap">
<style type="text/css">
.nowrap { white-space: nowrap; }
</style>

6
Uwaga: nowrapprzestarzała. w3.org/TR/html401/struct/tables.html#h-11.2.6 . Zamiast tego użyj arkuszy stylów.
wisbucky 6.04.16

Uwaga. jeśli zastosuje się go niedbale, ten atrybut może spowodować nadmiernie szerokie komórki.
ArifMustafa

1
@wisbucky W jaki sposób można „używać arkuszy stylów”?
rogerdpack


6

Doszedłem do tego pytania, aby zapobiec zawijaniu tekstu przy łączniku.

Oto jak to zrobiłem:

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

Odniesienie:

Jak zapobiec łamaniu linii przy łącznikach we wszystkich przeglądarkach


Warto zauważyć, że nobrtag jest niestandardowy, jak wskazano w zaakceptowanej odpowiedzi
podanej

Całkiem dobrze. Twój punkt został dobrze przyjęty. Przeczytałem wszystkie te komentarze, zauważyłem doświadczenia odpowiednich komentatorów i wydałem wyrok. Łącznik jest nieco trudny. (Uwaga: pytanie, które podałeś w komentarzu, jest tym samym, które
podłączyłem

Tak, miało to być to samo pytanie. Chciałem się tylko upewnić, że zastrzeżenie zostało opublikowane tutaj, na wypadek, gdyby ktoś znalazł tę odpowiedź w przyszłości, i nie zawracałem sobie głowy czytaniem odnośnika.
pkaeding

1

Do użytku z interfejsem React / Material

Jeśli zastanawiasz się, jak to działa w interfejsie materiałowym podczas budowania w React, oto jak dodajesz to do swojego <TableHead>komponentu:

<TableHead style={{ whiteSpace: 'nowrap'}}>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.