表のセル内のテキストが折り返されないようにする方法


285

テーブルセルのテキストが折り返されないようにする方法を誰かが知っていますか?これはテーブルのヘッダー用であり、見出しはその下のデータよりもはるかに長くなりますが、1行だけで表示する必要があります。カラム幅が非常に広い場合も問題ありません。

(簡略化された)テーブルのHTMLは次のようになります。

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

見出し自体はth、ページ上のJavaScriptに関連する理由により、タグ内のdivで囲まれています。

表は、見出しが複数行に折り返されて表示されます。これは、ブラウザが水平スクロールを回避しようとしているため、テーブルが十分に広い場合にのみ発生するようです。私の場合は、しかし、私は水平スクロールが欲しいです。

何か案は?

回答:


485

white-spaceこのように使用されるプロパティを見てください:

th {
    white-space: nowrap;
}

これにより、の内容が強制的<th>に1行で表示されます。

リンクされたページから、ここにさまざまなオプションがありますwhite-space

normal
この値は、ユーザーエージェントに一連の空白文字を折りたたみ、必要に応じて行ボックスを埋めるために改行するよう指示します。

pre
この値は、ユーザーエージェントが空白のシーケンスを折りたたむのを防ぎます。行は、保存された改行文字でのみ改行されます。

nowrap
この値は、「通常」の場合と同様に空白を折りたたみますが、テキスト内の改行を抑制します。

pre-wrap
この値は、ユーザーエージェントが空白のシーケンスを折りたたむのを防ぎます。保存された改行文字で、および必要に応じて行ボックスを埋めるために、行が分割されます。

pre-line
この値は、空白のシーケンスを折りたたむようにユーザーエージェントに指示します。保存された改行文字で、および必要に応じて行ボックスを埋めるために、行が分割されます。


8
同じセルの入力フィールドとボタンでは機能しません。下にランダムに配置します。
Doomsknight 2012年

16
Tabletable-layout:fixed;これが機能するには、要素が持っている必要があります。
daniloquio 2012

@Doomsknight同じセル内の入力フィールドと別の要素でそれを達成する方法を見つけましたか?
loveNoHate 2014年

空白:pre; -28.04が-と28.04の間をラップしていたので、私が必要としていたものでした
ブレント

1
@Doomsknightチェックボックスに同じ問題があり、CSSを更新することで解決しましたinput { display: inline; }
Programster

66
<th nowrap="nowrap">

または

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

または

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

6
nowrap廃止されていることに注意してください。w3.org/TR/html401/struct/tables.html#h-11.2.6。代わりにスタイルシートを使用してください。
wisbucky

注意。不注意に使用すると、この属性によりセルが過度に広くなる可能性があります。
ArifMustafa 2018年

1
@wisbuckyどのようにして「スタイルシートを使う」のですか?
rogerdpack

22

それには少なくとも2つの方法があります。

「td」タグ内でnowrap属性を使用します。

<th nowrap="nowrap">Really long column heading</th>

単語間には改行できないスペースを使用します。

<th>Really&nbsp;long&nbsp;column&nbsp;heading</th>

6
nowrap廃止されていることに注意してください。w3.org/TR/html401/struct/tables.html#h-11.2.6。代わりにスタイルシートを使用してください。
wisbucky

6

ハイフンでのテキストの折り返しを防ぐ必要があるこの質問に来ました。

これは私がそれをした方法です:

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

参照:

すべてのブラウザでハイフンでの改行を防ぐ方法


これは、ことは注目に値するnobr:タグはこの答えにリンクされ受け入れられた答えで尖ったアウトとして、非標準であるstackoverflow.com/a/8755071/4257
pkaeding

正解です。あなたのポイントは好評です。私はそれらすべてのコメントを読み、対応するコメンターの経験を記録し、判決を下しました。ハイフンは少しトリッキーです。(注:コメントでリンクした質問は、私の回答でリンクした質問と同じです)
cssyphus

ええ、それは同じ質問であることを意味していました。私は、誰かが将来この答えを見つけた場合に備えて、警告がここに投稿され、リンクされた参照をわざわざ読まないようにしたかっただけです。
pkaeding

1

React / Material UIで使用

ここで、Reactでのビルド時にMaterial UIでこれがどのように機能するのか疑問に思っている場合は、これを<TableHead>コンポーネントに追加する方法を次に示します。

<TableHead style={{ whiteSpace: 'nowrap'}}>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.