【问题标题】:Force <tr> height with CSS使用 CSS 强制 <tr> 高度
【发布时间】:2012-10-20 07:34:03
【问题描述】:

我需要控制表格行的高度——我已经尝试设置单元格的高度,但我遇到了一堵砖墙。 See demo.

tr.fixedRow,
tr.fixedRow td.fixedCell {
     height: 50px;
     overflow: hidden; }

我知道我可以将某些东西的display 更改为block,但这样做通常会以一种糟糕的方式弄乱桌子——我正在使用一个相当复杂的桌子,它与附近的其他桌子交互并且需要完美地排列像素,所以一般来说,更改display 然后尝试使用 CSS 再次使其看起来像一个表格对我来说不是一个好的解决方案,因为它不会匹配。我需要它来留一张桌子。

我也想避免这样做:

<td><div>
   ... cell content...
</div></td>

这看起来很糟糕。这么简单的事情肯定只有 CSS 解决方案吗?

【问题讨论】:

  • AFAIK,您可以使用 HTML 高度属性强制设置高度...
  • 没有检查,但看起来类似:stackoverflow.com/questions/1554928/…
  • @mayhewr 那个很接近,但他希望表格是一排,答案都反映了这一点(例如,使用white-space:nowrap; 或控制宽度以使高度匹配)。我希望给一行一个任意高度,因此该问题的解决方案对我没有多大帮助。
  • 是否需要提前确定列宽?如果没有,您可以将其设置为某个百分比并将单元格设置为position:relative,并在其中放置一个具有width:100%;position:absolute 的div。这行得通吗?

标签: css html-table


【解决方案1】:

您试图通过依赖一个无法按您期望的方式工作的 css 属性来实现这一点:CSS 溢出适用于块级元素,&lt;td&gt; 不是(css:display: table-cell;)。

CSS Overflow on MDN

出于这个原因,我相信您将无法达到固定高度,除非您在 &lt;td&gt;s 上设置 display: block; - 而且您说您不能因为它会破坏表格对齐,所以唯一明智的在我看来,替代方案是:

<td><span>...</span></td>

将您的 &lt;span&gt; 设置为 display: block; (除了 div 会破坏 html 验证之外,将 span 设置为阻止而不是 div 并没有真正的区别,而span 不会 - td 元素中不允许使用块元素)

这是我能想到的最优雅、最有效的方式。

【讨论】:

  • 我自己说得再好不过了。
  • 我不明白为什么将span 设置为display: block; 会阻止它验证...
  • 确实,我想我的答案在那个部分不是特别清楚,但我的意思是拥有div 会引发验证错误; span 当然不会抛出这样的错误,因为它不是块元素 - w3c 规范及其在验证工具中的实现并不关心 display 属性是否通过 CSS 设置为 block。我会修改我的答案以使其更清楚!
猜你喜欢
  • 1970-01-01
  • 2011-01-08
  • 2011-10-06
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 2013-06-01
  • 2016-05-01
  • 1970-01-01
相关资源
最近更新 更多