163 votes

Does<STYLE></STYLE>

Strictement parlant, n' style étiquettes doivent être à l'intérieur de l' head d'un document HTML? Le 4.01 standard implique que, mais il n'est pas explicitement déclaré:

L'élément de STYLE permet aux auteurs de mettre la feuille de style de règles dans la tête de le document. HTML permet à n'importe quel numéro de des éléments de STYLE dans la section d'en-TÊTE d'un document.

Je dis "à proprement parler" parce que j'ai une appli qui met des éléments de style à l'intérieur du corps, et que tous les navigateurs que j'ai testé avec l'air d'utiliser les éléments de style. Je me demandais simplement si c'est fait légal.

127voto

voyager Points 17283

style est censé être inclus uniquement sur l' head de ce document.

En plus de la validation, une mise en garde qui pourraient vous intéresser lors de l'utilisation d' style sur le body est le flash de non stylé contenu. Le navigateur peut obtenir des éléments de style après ils sont affichés, les faisant passer sur la taille, la forme et la police et/ou de scintillement. Il est généralement un signe de mauvaise exécution. Généralement, vous pouvez obtenir loin avec la mise en style n'importe où vous voulez, mais essayez de l'éviter à chaque fois que cela est possible.

HTML5 cependant introduit une scoped d'attribut, ce qui permet d' style tags être inclus partout dans le corps. L'impact de ces styles est limitée à l' style's parent-élément et tout, c'est l'enfant-éléments.

29voto

Mark Amery Points 4705

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.

19voto

Pumbaa80 Points 27066

Tandis que les autres réponses sont correctes, je suis surpris que personne n'a expliqué les normes de refuser des styles à l'extérieur de l' head.

C'est en fait dans la section sur L' head Élément (et dans la 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 -->

Oui, je sais. Les dtd sont difficiles à lire.

C'est le seul endroit où l' STYLE se présente, implicitement il est invalide ailleurs.

14voto

geowa4 Points 17712

Ils ne sont pas supposés aller à l’extérieur de la tête, mais ils fonctionnent en tout cas ; Cependant, vous pouvez remarquer un clignotement rapide. Le site ne devrait pas valider à l’aide de la balise de style à l’extérieur de la tête, mais qu’importe vraiment ? En outre, lien tags travail à l’extérieur de la tête, même s’ils ne sont pas censés.

3voto

Lazlo Points 1944

Si vous êtes dans le doute, le validateur de balisage du W3C toujours utile  :)

http://Validator.w3.org/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X