为什么我不能在<h2>?</h2> <table> </table>里面

时间:2012-05-29 23:21:41

标签: html5 markup specifications

我想了解这有什么问题:

<body>
    <h2>
        <table>
        <tr>
            <td> Text</td>
        </tr>
        </table>
    </h2>
</body>

验证者抱怨: 文档类型不允许元素“表”在这里;缺少“object”,“ins”,“del”,“map”,“button”start-tag

之一

进一步解释说:

  

上述元素不允许出现在您放置它的上下文中;其他提到的元素是唯一允许存在的元素,并且可以包含所提到的元素。这可能意味着您需要一个包含元素,或者您可能忘记关闭前一个元素。

     

此消息的一个可能原因是您尝试将块级元素(例如“<p>”或“<table>”)放入内联元素(例如“{{ 1}}“,”<a>“或”<span>“)。

h2和table都是块级别,因此最后的注释似乎不适用。我想要一个具有h2大小元素的表格,这是...告诉表格使用与h2使用的相同大小的正确方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:3)

CSS。在标题内部不允许使用表格,因为它没有语义意义。你见过一本书的章节,其标题是一张桌子吗?不要使用HTML语义标签进行外观;自己设计。

CSS table是块还是内联并不重要,只是HTML DTD所说的内容。查看here:只允许“流”元素进入td。点击链接查看“流程”的定义:你会看到它是“内联”或“阻止”。您可以继续关注这些链接,直到找到,例如sub很好,span也没问题......但你找不到table

此外 - 表格甚至不是display: block - 它们有自己的布局值display: table。并不重要。

答案 1 :(得分:2)

CSS是更改HTML元素大小的合适方法。 HTML不是用于创建视觉效果的。

CSS中没有办法明确告诉<table><h2>的大小。

但是,你可以告诉表和h2都是一个特定的大小,例如:

h2,
table {
    font-size: 2em;
}

您还可以使用Chrome的Web Inspector(或其他浏览器中的类似工具)检查默认样式,并将相关样式应用于您的表格。这些默认样式可能因浏览器而异。

至于为什么你不能在<h2>标签内放置一个表格,如果HTML规范为其嵌套规则提供了基本原理,我不确定是不是最重要的,但<h2> s用于标记标题,即描述文档部分的相对较短的文本。

很难想象桌子如何成为合适的标题。