質問

厳密に言えば、そうする style タグは内側にある必要があります head HTMLドキュメントの?4.01 標準はそれを暗示していますが、明示的には記載されていません。

スタイル要素により、著者はスタイルシートルールをドキュメントのヘッドに配置できます。HTMLは、ドキュメントのヘッドセクションにあるスタイル要素の任意の数を許可します。

「厳密に言うと」と言ったのは、本文内にスタイル要素を配置するアプリがあり、テストしたすべてのブラウザーでスタイル要素が使用されているようだからです。それが本当に合法なのかどうかだけが気になります。

役に立ちましたか?

解決

styleは文書のみのheadに含まれることになっています。

検証ポイントのほかに、stylebodyを使用しているときに興味かもしれない1つの警告は、<のhref = "http://web.archive.org/web/20150525042412/http://bluerobot.com/webですunstyledコンテンツでの/css/fouc.asp」のrel = "noreferrer">フラッシュ。 の彼らは、彼らがサイズ/形状/フォントおよび/またはちらつきにシフトすること、表示された後、ブラウザは、のスタイルられる要素になるだろう。これは、一般的に悪い職人技のサインです。一般的に、あなたはどこでもあなたが欲しいstyleを入れて逃げるが、それは可能である時はいつでもそれを回避しようとすることができます。

HTML 5はscopedタグが体内の至る所に含まれることを許可style属性を導入しましたが、その後、彼らは再びそれを削除します。

他のヒント

他の回答が正しいですが、

、私は誰もがのここで、の基準はheadの外のスタイルを禁止説明していない驚いています。

これはhead要素<上のセクションでは、実際にです/>(および DTD の)

<!-- %head.misc; defined earlier on as "SCRIPT|STYLE|META|LINK|OBJECT" -->
<!ENTITY % head.content "TITLE & BASE?">

<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- document head -->

はい、私は知っています。 DTDは読みにくいです。

このはSTYLE要素が発生した唯一の場所なので、暗黙のうちにそれは他の場所で無効です。

最新の WhatWG および W3C 仕様によると、はい、 style 要素 しなければならない 常にその中にいる head. 。しばらくの間、仕様には次のものが含まれていました scoped の属性 style 要素が存在する場合、本文内の要素内に配置して、その要素の子孫のみをスタイル設定できるようにします...しかし、その機能は実際のブラウザには決して搭載されず (少なくとも開発者フラグを介して有効にする必要がなければ)、両方の仕様から削除されました。 「実装者の関心が欠けているため」. 。その結果、 style 要素は、メタデータ コンテンツ (先頭のみ) を許可するコンテキストでのみ許可されるようになりました。

(わかりました、そうではありません とても true - メタデータ コンテンツを合法的に配置できます。 style 要素の内部 template 内の要素 body, ただし、テンプレートをサポートするブラウザを使用している場合は、実際には有効になりません。これは実際には単なる愚かな技術です。)

WhatWG仕様 これはこう言います:

4.2.6.の style 要素

カテゴリー:

メタデータの内容.

この要素を使用できるコンテキスト:

どこ メタデータの内容 期待されています。
<noscript> の子である要素 <head> 要素。

CTRL キーを押しながらクリックすると、 シングルページ仕様 コンテンツ モデルにメタデータ コンテンツが含まれる唯一の要素が、 head 要素。

一方、 最新の W3C ドラフト仕様 のコンテンツ モデル内のメタデータ コンテンツもリストしている点を除いて、まったく同じ文言が含まれています。 template 要素。(WG が概念化しているもの templateは異なり、コンテンツ モデルは次のようにリストされます。 nothing.)

非規範的なもの 要素のインデックス WhatWG 仕様では、 style 要素は head または noscript 要素。(同じインデックスの W3 バージョンでは、フロー コンテンツに次の内容を含めることができると誤って記載されています。 <style> 要素ですが、これは W3C が要素を削除するときに導入したエラーです。 scoped 属性。私は持っている プルリクエスト 開いて修正してください。)

彼らは頭の外に行くことになって、彼らはとにかく動作しません。あなたは、迅速なちらつきに気付くかもしれませんが。サイトでは、ヘッドの外側にスタイルタグを検証するべきではありませんが、それは本当に問題ありませんか?また、リンクタグは、それらが想定されていない場合でも、同様にヘッド外で働くます。

他の回答のように、それは実際には存在している必要はありません述べました。しかし、それは検証しません。これは、あるいはこの例では重要ではなく、HTMLのレンダリングが完全にブラウザ次第であることに注意してくださいしない場合があります。私は、今日のすべての使用のブラウザを知っているから、頭の外にそれを置くことをサポートしますが、将来のブラウザや将来のブラウザのリリースのためにそれを保証することはできません。

規格に固執すると、あなたはより安全です。非常に多くの議論のためにどのようにはるかに安全アップします。

スタイルタグのどこが、<head>内部はW3Cのルールを検証しません。

HTML5です。2W3C勧告14日2017 なードを上記の現在とすることができ <style>.

"身体にフローコンテンツが期待される。" セ4.2.6)

このサイトによると、(ドラフトで)HTML5.1とWHATWGは<style>タグが体内に入れることを許可します:

http://www.html.am/tags/html-style -tag.cfmする

これもかなりしばらくのブラウザでサポートされているようです。このStackOverflowの答えによると、Firefox 3以上、IE6 +は、サファリ2+とChromeがそれをサポート12+ます:

https://stackoverflow.com/a/10989663/297793

(ドラフトで)HTML 5.2仕様によると、スタイルタグは文書のみの頭の中で許可されます。

HTML 5.2ドラフトにスタイルタグ(2016年8月18日)

  

スタイル要素はの頭の中で登場するに制限されています   文書ます。

また、htmlタグの外でも、ヘッド部や本体部の内側にスタイルタグを使用したりすることができます(サイドHTMLから推奨されていません)。リアルタイムのプロジェクトの多くの時間では、あなたは彼らがhtmlタグの側からスタイルタグを使用して見ることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top