我无法找到这个问题的答案: <td>
的默认宽度在规范或UA文档中是在哪里定义的?
我已经搜索了HTML Living Standard, HTML5 Recommendation和其他各种来源。
根据我的理解(基于使用和观察),表格单元格默认情况下将占据所在列的全部宽度。如果该列中存在其他单元格,则该单元格不能被赋予不同的宽度。
我正在寻找官方确认此行为的资料,最好是W3C或用户代理文档。但任何权威的参考资料都可以接受。
我无法找到这个问题的答案: <td>
的默认宽度在规范或UA文档中是在哪里定义的?
我已经搜索了HTML Living Standard, HTML5 Recommendation和其他各种来源。
根据我的理解(基于使用和观察),表格单元格默认情况下将占据所在列的全部宽度。如果该列中存在其他单元格,则该单元格不能被赋予不同的宽度。
我正在寻找官方确认此行为的资料,最好是W3C或用户代理文档。但任何权威的参考资料都可以接受。
但它并没有提供除了自动表格布局的粗略指南之外的任何内容,这些用户代理可以遵循或偏离(它列出了一种类似于固定表格布局的逐步过程,但整个列表都是非规范性的)。通常情况下,您可以期望UAs在最常见的场景下表现一致 - 就像您观察到的那样,自动调整大小的表格单元格通常占用其内容所需的空间,而不会超过更多。但是在极端情况下,你会发现各种疯狂的情况。
默认的大小调整算法需要通过两次表格数据。在第一次遍历中,禁用了自动换行,用户代理会追踪每个单元格的最小和最大宽度。最大宽度由最宽的行给出。由于禁用了自动换行,段落将被视为长行,除非其被
元素打断。最小宽度由最宽的单词、图片等给出,考虑到首行缩进和列表标志等。换句话说,如果你要在窗口中格式化单元格的内容,请确定在开始裁剪之前可以使窗口的最小宽度。
然后使用最小和最大单元格宽度来确定相应的列的最小和最大宽度。这些转而用于找到表格的最小和最大宽度。请注意,单元格可以包含嵌套的表格,但这不会显着复杂代码。下一步是根据当前窗口大小(更准确地说是左右边距之间的宽度)分配列宽。
表格边框和单元格间距需要在分配过程中包括在内。有三种情况:
对于每一列,让 d 是该列的最大宽度和最小宽度之间的差。现在将该列的宽度设置为最小宽度加上 d 乘以 W 除以 D。这使得具有大量文本的列比具有较少内容的列更宽。
然后针对嵌套表格重复此分配过程。在这种情况下,封闭表格单元格的宽度发挥以上描述中当前窗口大小的作用。对于所有嵌套表格,将递归地重复此过程。
如果 COLSPEC 属性显式指定了列宽度,则用户代理可以尝试使用这些值。如果随后,其中一个单元格溢出其列宽,则可能会调用两次传递机制以重新绘制具有更合适的宽度的表格。如果该属性指定相对宽度,则始终需要进行两次传递模型。
然后修改列宽分配算法: