1

エラー行16、列23:このコンテキストでは要素本体の子として要素スタイルを許可していません。(このサブツリーからのさらなるエラーを抑制します。)

「このコンテキストで」と言っているので、HTML5を使用してCSSを埋め込む方法があることを望んでいます。

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

そしてそれが何を意味するにせよ、異なる「文脈」。

私はすべてのコードをきちんとしたHTML5/ CSSモジュールに入れています...そして私はCSSをHTMLから分割したくないのですが、ほとんどの人はこのようにしています。

埋め込まれたCSSをHTML5で維持し、検証を中断しない方法はありますか?

そうでない場合は、埋め込まれた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

スタイルタグは、ヘッドセクション内でのみ許可されます。

それまたはタグとのインラインスタイルとして、それを行う正当な理由がある場合にのみ行う必要があります。

于 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要素内に配置することをお勧めします。headbody通常、これを挿入する必要があるのは、作成者が制御headできないが、コードを挿入できる場合のみbodyです。)

状況によってはバリデーターが使用する「このコンテキストで」という表現は、明らかに紛らわしいものです。それは、さらに悪い(誤解を招く)処方を避けるために、私がずっと前に提案したいくつかの変更の結果だと思います。表現は意味があります。たとえば、マークアップが

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

これはHTML5のルールでは間違っています。これは、style属性を内部bodyで使用する場合、その親の先頭に表示する必要があるためです。「foo」がstyle要素の後に削除または移動された場合、コンテキストが変更され、マークアップがHTML5準拠になります。

于 2012-07-19T22:24:06.237 に答える
2

styleドキュメント内でのみ実行され、そのheadように単純です。外部スタイルシートを実行するか、開発中にhtmlファイルに含めます。ステージ。

于 2012-07-19T20:34:41.833 に答える