1

错误第 16 行,第 23 列:在此上下文中,元素样式不允许作为元素主体的子元素。(抑制来自该子树的更多错误。)

因为它是“在这种情况下”,我希望有一种方法可以使用嵌入 CSS 我的 HTML 5

<style TYPE="text/css">
</style>

以及不同的“上下文”,无论这意味着什么。

我的所有代码都在整洁的 HTML 5 / CSS 模块中......而且我不喜欢将我的 CSS 从我的 HTML 中分离出来,尽管我认为大多数人都是这样做的。

有没有办法可以保留嵌入的 CSS w/我的 HTML 5 而不会破坏验证。

如果不能,我可以将嵌入的 CSS 放在文档的头部吗?

我可以把它放在哪里?

4

5 回答 5

5

除非属性存在,否则style标签会进入标签,例如:headscoped

<!DOCTYPE html>
<html>
<head>
<title>HTML5 CSS scope attribute</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

<style>
.myClass {
    color: red;
    background-color: blue;
}
</style>

</head>

<body>

<div>
<span class="myClass">This text is red, and the background is blue.</span>
</div>

<div>
<style scoped>
.myClass {
    background-color: yellow;
}
</style>
<span class="myClass">This text is red, and the background is yellow.</span>
</div>

</body>

但是,该scoped属性尚未在任何浏览器中实现:

于 2012-07-19T20:40:04.387 回答
4

样式标签只允许在 head 部分中。

或者作为内联样式与标签一起使用,只有当你有充分的理由这样做时,你才应该这样做。

于 2012-07-19T20:23:27.177 回答
3

<script>标签不同,<style>只能在<head>部分中使用。这就是您收到错误的原因。把它放在<head></head>标签之间。


但是,您仍然可以在正文中使用样式并且仍然有有效的代码,但方式有所不同。您必须将其放在style元素的属性中。

例子:

<span style="background-color: #000; color: #fff;">Some text here</span>

如果您希望代码有效,这是唯一的方法。您不能使用<style></style> 标签,只能使用属性

于 2012-07-19T20:25:56.007 回答
3

验证器的错误消息是错误的,如果您在style元素的最开始有body元素,我怀疑它是。正如对消息的解释所暗示的那样,只要使用了scoped属性,就允许这样的构造。

使用该scoped属性是没有意义的,因为目前还没有浏览器实现它,但是如果你使用它,未来的浏览器可能会解释与当前浏览器完全不同的元素。所以以上只是事情的正式方面。

一个没有属性的简单style元素即使放在body. 正式的规则只是禁止它,而 HTML5 目前坚持它,只是因为它的编辑器认为呈现的用例并不重要。

但是,最好将元素放在style元素内部head,它在所有规范中都有效。body(通常只有在作者无法控制head但可以将代码注入.) 时才需要将其放入body。)

验证者在某些情况下使用的“在这种情况下”的措辞无疑是令人困惑的。我认为这是我很久以前提出的一些改变的结果,以避免更糟糕(误导)的表述。措辞是有意义的,例如,如果标记是

<div>
foo
<style scoped></style>
</div>

这在 HTML5 规则中是错误的,因为该style属性在内部使用时body,必须出现在其父级的开头。style如果“foo”被删除或移动到元素之后,则上下文会发生变化,并且标记会变成符合 HTML5 的标记。

于 2012-07-19T22:24:06.237 回答
2

style只在head文档中运行,就这么简单。在开发期间运行外部样式表或将其包含在您的 html 文件中。阶段。

于 2012-07-19T20:34:41.833 回答