【问题标题】:Wrap text inside table based on screen width根据屏幕宽度在表格内换行
【发布时间】:2020-05-03 17:15:11
【问题描述】:

考虑到屏幕宽度调整大小,我想在表格中包含单行文本。该表格占据了 100% 的屏幕宽度,一旦调整窗口大小,我只想将文本换成一行(如果超出内容宽度,则用省略号换行)。我只能在以像素为单位指定固定宽度时实现文本换行。 JSFiddle:https://jsfiddle.net/4vo7p58c/5

问题是在td 元素上没有固定的width,它不会换行,一旦我水平调整窗口大小,行会分成两行而不是换行以适应屏幕宽度

【问题讨论】:

  • td 中删除`white-space: nowrap;`。

标签: css responsive


【解决方案1】:

你的代码就快到了,

td 默认是table-cell 元素,通常不同于inline-blockblock

如果你想使用 ellipsis 值,那么你应该有一个 td 的宽度,这将确保内容保持溢出,并为你的原因使用 display:block/inline-block;,它适用于两者。

table {
  width: 100%;
  border-collapse: collapse;
  border: 1px solid red;
  table-layout: fixed;
}

th {
  text-align: left;
  border-bottom: 1pt solid #4C4C4C;
  border-right: 1pt solid #4C4C4C;
  padding: 8px;
  width: 20%;
}

td {
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  width: 100%;
  border: 1px solid #000000;
  word-wrap: break-word;
}
<div class="External">
  <table>
    <tr>
      <th>First Element</th>
      <td>Text</td>
    </tr>
    <tr>
      <th>Second Element</th>
      <td>Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum</td>
    </tr>
    <tr>
      <th>Third Element</th>
      <td>Text</td>
    </tr>
    <tr>
      <th>Fourth Element</th>
      <td>Text</td>
    </tr>
  </table>
</div>

【讨论】:

  • 感谢@Manjuboyz 的回答。我对我的问题不够清楚(我现在已经编辑过),但我想避免换行,但如果文本超出内容宽度,请用省略号换行。
  • 感谢您的更新。在这个新代码中,td 元素被限制为可用宽度的 60%。问题是我需要它始终适合 100% 的可用宽度,如果文本仍有要显示的内容,则用省略号包裹文本。此外,如果我将 JSFiddle 上的窗口大小调整为低于 60%,则文本会溢出红色框而不是换行。
  • 好的,我明白了你的意思,但我觉得这两个陈述在这里是矛盾的,要隐藏多余的内容,你必须为 td 提供一些特定的宽度并减少屏幕尺寸你想发生什么?意味着内容应该去正确的地方,但在你的情况下你不想换行那么应该发生什么?
  • 我认为新代码现在解决了您的两个问题!核实。这是小提琴:jsfiddle.net/Manju06/r581obtL/25
  • 非常感谢@Manjuboyz!这个解决方案就像一个魅力!
猜你喜欢
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
  • 2023-03-03
  • 1970-01-01
  • 2020-11-29
  • 2013-01-04
  • 2014-03-30
相关资源
最近更新 更多