无法更改 table 数据元素的宽度

Can't change width of table data element

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

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

table 单元格 (<td>) 的宽度定义方式有些模糊,如 。但这里有一些在各种浏览器中都出现的特征table。

管理 HTML Table 个单元格

的宽度
  1. Table 单格
    在由单个单元格组成的 table 中 - 换句话说,具有一列和一行的 table - 其中宽度未在 <table> 元素中明确定义,宽度可以直接由 <td> 元素控制。

    这行不通(td 规则将被忽略):

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

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

    但是,这会起作用:

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

    DEMO


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

    DEMO


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

    DEMO


问题中描述的问题涉及 table 单元格,该单元格不接受较短的宽度分配。这里的第一个实现是默认情况下 table 单元格扩展以填充分配的列宽的 100% ()。减少这个单元格宽度的方法上面有介绍

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

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

DEMO


colspan

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

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

DEMO


因此,如果您的 table 单元格不会移动,请考虑调整 <table> 元素的宽度(如果它是单列 table),分配并调整一个 <col> 元素(如果它是一个多列 table),直接调整内容的宽度(如果这是你想要调整的唯一元素),或者使用 colspan.

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