web-dev-qa-db-fra.com

Pourquoi les balises <style> de la balise HTML <body> ne peuvent-elles pas être validées sur le W3C?

Duplicate possible:
Est-ce que <STYLE> doit figurer dans la <HEAD> d'un document HTML?

Je fais partie d'une équipe qui a développé un système de gestion de contenu.

Nous aimerions pouvoir insérer des balises <style> dans le <body> d'une page HTML de manière à valider les normes W3C, car la validation est une exigence de notre consultant en référencement.

La balise style fonctionne parfaitement dans la balise body dans tous les navigateurs, mais elle refuse de valider.

22
chris

La DTD HMTL ne le permet pas, donc elle ne valide pas. Peu importe, tous les navigateurs le supportent de toute façon.

25
Spliffster

La spécification HTML 4 indique qu'il est supposé se trouver dans l'élément HEAD, pas dans l'élément BODY. Voir aussi cette question connexe (dupliquer?)

Est-ce-que-le-style-doit-être-dans-la-tête-d'un-document-html

Référence W3C HTML 4.01 sur <style>

HTML autorise n'importe quel nombre d'éléments STYLE dans la sectionHEADd'un document.

7
RichardTheKiwi

Les éléments <style> contiennent des métadonnées qui s'appliquent à l'ensemble du document. C'est ce que l'élément <head> a été conçu pour contenir. Il est tout à fait logique pour eux de vivre dans la tête, c’est donc là que la spécification l’exige.

4
Quentin

Littéralement, une balise <style> à l'intérieur de la balise <body> ne sera pas validée car toutes les spécifications HTML indiquent qu'elle ne peut pas être présente.

Quant à pourquoi les spécifications le disent, je ne sais pas. L'exigence est toujours dans la dernière spécification HTML, et récemment, les choses qui fonctionnaient dans le monde réel et qui étaient interdites par les spécifications précédentes (par exemple, l'omission de l'attribut type sur la balise <style>) ont été autorisées, donc je suppose qu'il doit y avoir une raison pourquoi l'exigence est toujours là.

J'imagine qu'il y a des cas où l'inclusion d'une balise <style> dans le corps rend le rendu de page plus difficile/plus lent/moins fiable.

2
Paul D. Waite

Contre quoi vous validez? HTML, XHTML Transitional, XHTML strict?

Probablement parce que les styles en ligne ne sont pas valides dans XHTML Strict. Vous devez utiliser class="foo" à la place et définir foo dans un fichier CSS.

0
JK.