【问题标题】:Can't change width of table data element无法更改表格数据元素的宽度
【发布时间】:2015-08-12 01:12:18
【问题描述】:

我正在发布相关元素的屏幕截图。您应该能够看到,我正在应用特定于元素的样式,删除所有边距、填充并将宽度设置为 0px。不管我做什么,这个表数据元素都异常大。我想显着减小它的宽度,但它不听我的。我觉得这是一些我一无所知但不能说的晦涩的 HTML 算法。有什么想法吗?

更新:答案是 HTML 将确保表格数据元素占据表格的整个宽度,无论您是否尝试缩小单个元素(因此本质上,这是一些奇怪的 HTML 算法或功能)。也就是说,我会接受下面的答案,因为它非常全面,应该涵盖人们可能遇到的其他可能问题。

【问题讨论】:

  • 发布您的代码,而不是屏幕截图。
  • 我已经更新了我的答案。我认为它涵盖了您遇到的问题以及其他各种情况。请随时告诉我。
  • 我也遇到过类似的问题。将 input max-width% 更改为 px 解决(删除)单元格内多余的边距/填充。

标签: html css html-table


【解决方案1】:

表格单元格 (<td>) 的宽度是如何定义的,如 official documentation is unclear and allows some behavior to be defined by the browser。但这里有一些在各种浏览器中看起来很稳定的特征。

管理 HTML 表格单元格的宽度
  1. 带有单个单元格的表格
    在由单个单元格组成的表格中——换句话说,一个一列一行的表格——其中宽度尚未在 <table> 元素中明确定义,宽度可以直接由 <td> 控制元素。

    这不起作用(td 规则将被忽略):

    table { width: 100%;}
    td {width: 300px;}
    

    width: 300px 失败,因为 <table> 元素具有定义的宽度。

    但是,这将起作用:

    /* table { width: 100%;} */
    td {width: 300px;}
    

    DEMO


  1. 包含多个单元格的表格列
    要在具有多个单元格的列中设置表格单元格的宽度,必须调整整个列。分配给个人<td>s 的任何宽度都将被忽略。只需调整表格的宽度即可调整列中<td>s的宽度。

    DEMO


  1. 多列多行表格
    要设置具有多列和多行的表的宽度,Table Column Element (<col>) 是理想的选择,因为它针对单个列。

    DEMO


问题中描述的问题涉及不接受较短宽度分配的表格单元格。这里的第一个实现是默认情况下表格单元格会扩展以填充分配的列宽的 100% (learn more about <td> default width)。上面介绍了减小这个单元格宽度的方法。

但是,我怀疑在某些情况下,想要减小表格单元格宽度的人实际上是在尝试减小单元格内内容的宽度(例如图像或表单输入)。在这些情况下,可能不需要调整表格。所需要的只是调整内容本身或其容器的宽度(divspanfigure 等)。

在此图像中,表格单元格的宽度为 100%,但输入字段的宽度有所不同。

DEMO


colspan

如果实际上需要减小包含多个单元格的列中单个单元格的宽度,那么您可能需要考虑colspan 属性。使用colspan,我可以合并列,使单元格更宽。没有分配colspan 的单元格会更短,当它们的相邻单元格被隐藏时会显得更短。

在此图像中,display: none 已应用于此 2 列表的右下角单元格。

DEMO


因此,如果您的表格单元格不会移动,请考虑调整 &lt;table&gt; 元素的宽度(如果它是单列表格),分配并调整 &lt;col&gt; 元素(如果它是多-column table),直接调整内容的宽度(如果这是您要调整的唯一元素),或使用colspan

抱歉,我无法更具体地了解您的具体解决方案。没有提供代码供审查。但希望其中一种方法可以帮助您。

【讨论】:

  • 非常感谢这个非常彻底的回答!当我尝试调试将来可能遇到的任何表问题时,我肯定会在将来查阅它。但是,我发现这个问题是由于表格数据元素会占据表格的整个宽度,而不管单个元素的宽度设置为多少。我创建了一个隐藏的表格数据元素并设置它的宽度以占用空间,虽然不是理想的解决方案,但唯一一个似乎合理的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2012-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多