2016-11-08 57 views
2

在html中,一些元素对它们允许的内容类型有限制。一个示例是<summary>元素,其内容必须是phrasing contentheading content的一个元素。这是有效的HTML:html内容类型和内联/块元素之间的连接

<details> 
    <summary><span>Foo</span></summary> 
    ... 
</details> 

虽然这是无效的:

<details> 
    <summary><div>Foo</div></summary> 
    ... 
</details> 

由于<div>不措辞的内容,也没有标题的内容。

但是呢?

<details> 
    <summary><span style="display: block">Foo</span></summary> 
    ... 
</details> 

据我了解,这仍然应该是有效的HTML,因为<span>是段落式内容,但由于display: block,该<span>元素将行为方式作为<div>会相同。

不同类型的内容和inline/block元素之间是否有任何联系,还是他们完全不同的东西?

当需要特定类型的内容时,我能期望浏览器正确渲染内容吗,但是内容的样式与正常情况不同?

回答

1

elements和语义之间没有联系,您如何选择显示这些元素 - CSS只是样式,可以做任何事情。语义标记(HTML)是完全不同的问题。这两者之间没有相关性,使得display: block完全有效。

+0

尼斯:)是否有任何元素,作为他们的孩子是内联/块元素的要求? –

+0

不可以。没有特定元素只能在其他元素内,但没有设置如何显示这些元素的规则。请注意,CSS仅适用于可视用户代理,并且HTML不关心如何显示内容,只是如何将容器放置在标记中。 – junkfoodjunkie