【问题标题】:How to prevent text in a table cell from wrapping如何防止表格单元格中的文本换行
【发布时间】:2010-09-22 22:45:30
【问题描述】:

有谁知道如何防止表格单元格中的文本换行?这是一个表格的标题,标题比它下面的数据长很多,但我需要它只显示在一行上。列很宽也没关系。

我的(简化的)表格的 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 标记内的一个div 中,原因与页面上的javascript 有关。

表格出来的标题是多行的。这似乎只在表格足够宽时发生,因为浏览器试图避免水平滚动。不过,就我而言,我想要水平滚动。

有什么想法吗?

【问题讨论】:

    标签: html css


    【解决方案1】:

    查看white-space 属性,使用如下:

    th {
        white-space: nowrap;
    }
    

    这将强制&lt;th&gt; 的内容显示在一行上。

    从链接页面,这里是white-space 的各种选项:

    正常
    该值指示用户代理折叠空白序列,并根据需要换行以填充行框。


    此值可防止用户代理折叠空白序列。仅在保留的换行符处换行。

    无包装
    此值会像“正常”一样折叠空白,但会抑制文本中的换行符。

    预包装
    此值可防止用户代理折叠空白序列。在保留的换行符处换行,并根据需要填充行框。

    预行
    该值指示用户代理折叠空白序列。在保留的换行符处换行,并根据需要填充行框。

    【讨论】:

    • 不适用于同一单元格中的输入字段和按钮。下面随机放置。
    • Table 元素必须有 table-layout:fixed; 才能正常工作。
    • @Doomsknight 你有没有找到一种方法来在同一个单元格中使用输入字段和另一个元素来实现它?
    • 空白:pre;是我需要的,因为 -28.04 介于 - 和 28.04 之间
    • @Doomsknight 我在复选框中遇到了同样的问题,并通过使用 input { display: inline; } 更新 CSS 来解决它
    【解决方案2】:
    <th nowrap="nowrap">
    

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

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

    【讨论】:

    【解决方案3】:

    至少有两种方法:

    在“td”标签内使用 nowrap 属性:

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

    在单词之间使用不可破坏的空格:

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

    【讨论】:

    【解决方案4】:

    我遇到了这个问题,需要防止在连字符处换行。

    我就是这样做的:

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

    参考:

    How to prevent line break at hyphens on all browsers

    【讨论】:

    • 值得注意的是,nobr 标记是非标准的,正如在此答案中链接的已接受答案中指出的那样:stackoverflow.com/a/8755071/4257
    • 完全正确。你的观点很受欢迎。我阅读了所有这些 cmets,记录了相应评论者的经验,并做出了判断。连字符有点棘手。 (注意:您在评论中链接的问题与我在回答中链接的问题相同)
    • 是的,本来就是同一个问题。我只是想确保在此处发布警告,以防将来有人找到此答案,并且不费心阅读链接的参考。
    • 哇——奇怪的一个;谢谢 - 我在连字符后换行换行时遇到了同样的问题
    【解决方案5】:

    用于 React / Material UI

    如果您想知道在 React 中构建 Material UI 时它是如何工作的,下面是如何将它添加到您的 &lt;TableHead&gt; 组件中:

    <TableHead style={{ whiteSpace: 'nowrap'}}>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 2020-02-27
      • 2011-05-21
      • 1970-01-01
      • 2022-12-14
      • 2016-09-09
      • 1970-01-01
      相关资源
      最近更新 更多