style
要素の先頭に要素がある場合、バリデーターのエラーメッセージはエラーにbody
なっています。メッセージの説明が示すように、scoped
属性が使用されている場合、そのような構成は許可されます。
属性を使用するscoped
ことは、まだブラウザが実装していないため意味がありませんが、使用する場合、将来のブラウザは要素を現在のブラウザとはまったく異なる方法で解釈する可能性があります。したがって、上記は問題の正式な側面にすぎません。
属性のない単純なstyle
要素は、に配置されている場合でもブラウザで機能しますbody
。正式なルールはそれを禁止しているだけであり、HTML5は現在、提示されたユースケースは重要ではないと編集者が考えているという理由だけでそれに固執しています。
ただし、すべての仕様で有効な要素をstyle
要素内に配置することをお勧めします。head
(body
通常、これを挿入する必要があるのは、作成者が制御head
できないが、コードを挿入できる場合のみbody
です。)
状況によってはバリデーターが使用する「このコンテキストで」という表現は、明らかに紛らわしいものです。それは、さらに悪い(誤解を招く)処方を避けるために、私がずっと前に提案したいくつかの変更の結果だと思います。表現は意味があります。たとえば、マークアップが
<div>
foo
<style scoped></style>
</div>
これはHTML5のルールでは間違っています。これは、style
属性を内部body
で使用する場合、その親の先頭に表示する必要があるためです。「foo」がstyle
要素の後に削除または移動された場合、コンテキストが変更され、マークアップがHTML5準拠になります。