Le HTML 5 spec a toujours besoin d' <style>
- éléments dans l' <head>
, pas l' <body>
, à moins qu'ils utilisent l' scoped
d'attribut.
À partir de la spécification:
4.2.6 L' style
élément
...
Les contextes dans lesquels cet élément peut être utilisé:
- Si l'
scoped
attribut est absent: où le contenu de métadonnées est prévu.
- Si l'
scoped
attribut est absent: en noscript
élément qui est un enfant d'un head
élément.
- Si l'
scoped
attribut est présent: où le flux de contenu est prévu, mais avant tous les autres flux de contenu autre que les inter-élément espaces et style
- éléments, et non pas comme l'enfant d'un élément dont le modèle de contenu est transparent.
(Note: il y a beaucoup, beaucoup plus en ligne liens dans la version originale du passage ci-dessus qui définissent les termes utilisés. Je n'ai conservé celui concernant l'argument à la main.)
En supposant que votre <style>
élément n'a pas l' scoped
ensemble d'attributs, alors, il ne peut être inclus dans un <noscript>
élément dans l' <head>
, ou lorsque le contenu de métadonnées est prévu. Nous pouvons voir quel type de contenu est attendu où, en regardant les specs des passages pour l' <head>
et de la <body>
:
4.2.1 L'élément de tête
...
Modèle de contenu:
Si le document est un iframe srcdoc
document ou si le titre de propriété de l'information est disponible à partir d'un protocole de niveau supérieur: Zéro ou plusieurs éléments de contenu de métadonnées, dont pas plus d'un est un title
élément et pas plus d'un est un base
élément.
Sinon: Un ou plusieurs éléments de métadonnées de contenu, de qui exactement est un title
élément et pas plus d'un est un base
élément.
(L'emphase est mienne)
4.3.1 L'élément body
...
Modèle de contenu:
Flux de contenu.
Juste au cas où vous n'êtes toujours pas convaincu, notez que la définition de "flux de contenu" - le seul type de contenu autorisé dans l' <body>
- spécifie explicitement que cela inclut <style>
seulement si l' scoped
attribut est présent. Donc, sauf si vous utilisez scoped
, non, vous ne pouvez pas légalement de mettre votre <style>
balises dans le corps.