在<head>元素之外使用<style>标签是否正确?

azb*_*zbc 5 html css cgi

在<head>元素之外使用<style>标签是否正确?

像这样:

<html>
<head>
<style> some style </style>
</head>
<body> some text </body>
<style> some more style </style>
<body> some more text </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我想这样做是因为:我的cgi使用自己的风格来源其他文件.

cgi文件包含:

#!/bin/bash
echo "content-type: text/html"
echo ""
echo "<html><head><style>"
echo "h1 {color: red;}"
echo "</style>"
echo "<body>"
echo "<h1> some text here </h1>"
echo "</body>"
source ./data.sh
echo "</html>"
Run Code Online (Sandbox Code Playgroud)

源文件包含:

echo "<style>"
echo "h2 {color: blue;}"
echo "</style>"
echo "<body>"
echo "<h2> and some other text here </h2>"
echo "</body>"
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常.但这是对的吗?

在w3schools,它说:每个HTML文档可以包含多个<style>标签.
但是这样做了吗?

小智 8

样式应该只包含在文档的头部.

除了验证点之外,在身体上使用样式时可能会感兴趣的一个警告是没有样式内容的闪光.浏览器将获得在显示后将被设置样式的元素,使它们在大小/形状/字体和/或闪烁上移位.这通常是工艺糟糕的表现.一般来说,你可以随心所欲地放置风格,但尽可能避免使用它.

HTML 5引入了一个scoped属性,允许样式标记包含在正文的任何​​位置,但随后又将其删除.

根据W3规范,<link>标签只应该在以下<head>部分:

参考

对于HTML 4.01:http://www.w3.org/TR/html401/struct/links.html#edef-LINK

对于HTML5:http://www.w3.org/TR/html5/document-metadata.html#the-link-element

验证问题

如果将标记放在HTML文档的正文中,则不会使用validate.w3.org进行验证

  • 这个答案是题外话。azbc在询问样式标签,而不是链接标签。确实,链接标签应该放在头部,但是内联样式标签在任何地方都是可以接受的。由于这是公认的答案,因此我将其改写以匹配该问题。 (6认同)

小智 5

<style>标签可以位于 HTML 文档中的任何位置。但是,最好将其放在<head>.

根据我个人的经验,最好制作一个单独的样式表来放入所有 CSS。