将“display: table-cell”元素放在“display: table-row”元素之外是否是有效的结构?

4
在我要处理的一个样例Web应用程序中,我注意到一些元素具有 display: table-cell 样式,但它们的父元素没有 display: table-row
对我来说,这似乎是错误的,但我并不确定。
因此,我的问题是:这是有效的构造吗?如果有问题,可能会造成什么影响?
谢谢。
以下是我所指的示例:
<div style="display: block">
  <div style="display:table-cell">
    <p>Some content</p>
  </div>
</div>

+1 这应该移动到代码审查。个人认为,在除了tr以外的任何东西上使用display: table-row都是对正确的CSS/HTML的误用。 :) - iambriansreed
@anonymousdownvotingislame:感谢您的点赞。但我不确定它是否适合代码审查。在我看来,这不是需要验证或改进的大型代码,而是关于特定结构有效性的问题。 - ereOn
2
与@anonymousdownvotingislame相反,我认为display:table-cell是专门用于显示非表格数据,就像它在表格单元格中一样。在我看来,只要不将表格数据放在div而不是表格中,这是完全有效的。 - Torsten Walter
1个回答

3

我有点像Faust,他很友好地找到了规格(但似乎现在已经删除了他的答案)...

是的,它(可能)有效。

除HTML之外的文档语言可能不包含CSS 2.1表模型中的所有元素。在这些情况下,“缺失”的元素必须被假定以使表模型正常工作。任何表元素都将自动生成必要的匿名表对象,周围至少有三个嵌套对象对应于“table”/'inline-table'元素、一个“table-row”元素和一个“table-cell”元素。

来自17.2.1匿名表对象, http://www.w3.org/Style/css2-updates/css2/tables.html#anonymous-boxes

这可以解释为在没有正确结构的非HTML语言中将创建匿名框,但我会假设它也会在HTML中生成匿名表对象。


非常感谢您抽出时间在标准中找到适当的引用!它完美地回答了我的问题。 - ereOn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接