是否必须在标签内定义CSS?

时间:2011-08-02 10:00:53

标签: html css

我想在我的页面中定义一个CSS片段,如下所示:

<style type="text/css">
hr {color:sienna;}
p {margin-left:20px;}
</style>

我一直在读它应该在<head>元素中定义,但它在内联时似乎工作正常。有人可以确认这是否合适?

4 个答案:

答案 0 :(得分:9)

对于HTML 4,规范说:

  

STYLE元素允许作者将样式表规则放在文档的头部。 HTML允许文档的HEAD部分中的任意数量的STYLE元素。

Reference: http://www.w3.org/TR/html4/present/styles.html#h-14.2.3

他们对“head文件”的说明,而不仅仅是“文件”强烈暗示其他地方不合适。

但是,对于HTML 5,这是放宽的,style元素可以放在文档本身中:

  

style元素允许作者在其文档中嵌入样式信息。样式元素是样式处理模型的几个输入之一。该元素不代表用户的内容。

Reference: http://www.w3.org/TR/html5/semantics.html#the-style-element

答案 1 :(得分:1)

大多数浏览器将它放在页面的任何位置,但请注意,它只会从那时开始生效。另外,如果你没有将它放在head元素中,它就不是有效的HTML。

此外,it's considered best practise to put it in the head element因为它改善了页面渲染时间。

答案 2 :(得分:1)

确定。

虽然某些浏览器可能(错误地)在不在HEAD元素中时关心它,但这不是您应该依赖的行为,因为它与HTML标准相反,并且对于任何给定的浏览器将来可能会或可能不会起作用

编辑更新:在HTML 5中,样式元素的范围可以仅适用于子树,在这种情况下,它们不需要位于head元素中。

然而,他们仍然需要在他们适用的任何其他内容面前,所以同样的原则适用。

答案 3 :(得分:1)

除非您使用HTML5和scoped属性,否则它不是严格有效的。

http://www.w3schools.com/html5/tag_style.asp

虽然我所知道的所有浏览器都会在文档中的任何位置接受标记。