45 votes

balises de style et de script dans le corps HTML ... pourquoi pas?

[Ceci est lié à cette question, mais pas puisqu'il n'est pas sur l'e-mail.]

Dans de nombreux cas-en particulier lorsque vous travaillez avec un CMS ou de quelqu'un d'autre cadre, il est beaucoup plus facile à intégrer <style> balises et <script> de balises dans l' <body> que dans l' <head>. Cela semble fonctionner dans IE6, IE7 (Windows), Firefox 3.x et Safari (mac OS X).

À strictement parler, est-ce mal? Et si elle l'est, quelles conséquences négatives peut-il provoquer... en plus d'être complètement ignoré dans certains clients?

Remarque: Content que tout le monde veut parler à SEC et de centraliser les styles. Imaginez une seconde que je veux utiliser les balises de style dans un document parce qu'ils ne SONT PAS GLOBAUX et que je N'AI PAS ACCÈS À LA TÊTE PAR PAGE. Pour quelque raison que ce soit, soit que le site se distingue sur un page par page, ou par paragraphe ou quoi que ce soit. Je ne suis pas intéressé par son difficile à suivre, vers le bas et changer. Je suis inquiet des conséquences possibles de l'utilisation de style dans le corps.

Vous centralisez les choses centrale. Tout le reste est la météorisation dans le centre des feuilles de style.

27voto

Chris Moschini Points 7278

Bien que les spécifications indiquent explicitement les balises de style ne sont pas autorisés dans la balise body, les spécifications ne sont pas tout ce qui compte. Les balises de Style sont pris en charge dans le corps par tous les principaux navigateurs, et c'est en fin de compte la façon dont les utilisateurs voient votre site.* Alors qu'il a longtemps été un lecteur pour de meilleures normes et des standards dans le navigateur de l'industrie, il y a aussi longtemps été une mobilisation générale pour rendre cassé documents ainsi que peut être.

Google, qui mène la spec HTML5 effort, simultanément maintient google.com qui viole les specs pour économiser des octets, en laissant les citations de ses valeurs d'attribut, à l'aide du sélecteur de hacks contre le CSS, y compris les balises de script avec aucun type ou de la langue, et des balises link avec aucun type. Un puriste pourrait faire valoir l'un des plus utilisés sur les sites internet est en train de violer les spécifications et en grave danger d'être horriblement misrendered. Ou, nous pouvons raisonner qu'aucun navigateur va entrer dans l'usage populaire qui ne peut pas rendre une telle largement utilisé hacks sur la spécification.

Donc, la question est plus de la façon dont le navigateur de l'industrie est - ce qui est l'une des deux meilleures spécifications, mais aussi en faisant de leur mieux pour honorer l'intention de pages qui contreviennent à ces spécifications. Mon pari est de balises de style va continuer à travailler dans le corps pendant une longue période à venir.

*De cette écriture, les balises de style dans le corps sont pris en charge avec un doctype HTML5 dans Firefox 3+, IE6+, Safari 2+, Chrome 12+. Le soutien probable remonte plus loin mais ces navigateurs sont rarement vus sur les interwebs.

16voto

Jonathan Sampson Points 121800

Les contextes dans lesquels l' <script> et <style> tags peuvent être utilisés dépend du type de document que vous utilisez. Par exemple, je vais supposer que vous êtes en utilisant le doctype HTML5:

<!DOCTYPE html>

La balise script a deux contextes sous le doctype HTML5:

  1. le contenu de métadonnées est prévu.
  2. le phrasé contenu est prévu.

Le style de la balise est un peu plus compliqué au contexte de la structure sous le doctype HTML5:

  1. Si la portée de l'attribut est absent: où le contenu de métadonnées est prévu.
  2. Si la portée de l'attribut est absent: dans un noscript élément qui est un enfant de l'un à la tête de l'élément.
  3. Si la portée de l'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 non pas comme l'enfant d'un élément dont le modèle de contenu est transparent.

Essentiellement, cela signifie que vous pouvez placer la balise style et la balise de script dans le corps, puisque le corps est l'endroit où il de contenu de flux, et à la rédaction de contenu.

Comme toujours, consultez la spécification pour le doctype que vous utilisez.

10voto

Gumbo Points 279147

La réponse courte:


La réponse détaillée:

STYLE est défini pour être en tête.divers:

<!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" -- repeatable head elements -->

Et les éléments de la tête.divers ne sont autorisés à être des enfants de l' HEAD élément. Donc, STYLE n'est autorisé à être enfant de l' HEAD élément.

SCRIPT est défini pour être en tête.divers et spéciaux:

<!ENTITY % special
   "A | IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO">

Et spécial défini pour être en inline:

<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

En outre, SCRIPT est également permis d'être l'enfant de l' BODY élément. Donc, SCRIPT est autorisé dans l' HEAD élément nad où inline est autorisé.

3voto

james.garriss Points 3647

Deux réponses possibles pour le style dans le corps:

  1. Utiliser inline style. Vrai, vous perdrez les avantages internes et externes de style, mais si vous n'avez pas accès à l'en-tête, alors vous n'avez pas accès à l'en-tête.

  2. L'utilisation de la portée de l'attribut dans l'élément style. Ce qui est nouveau, HTML5, mais l'idée est de limiter le champ d'application de la CSS à une partie d'une page, par exemple à un seul div. La mauvaise nouvelle, c'est qu'il n'est pas encore pris en charge (juillet 2011), il n'est ni rétro-compatible. Mais il y a (aurait) un plugin JQuery qui peut vous aider. Pour plus d'info:

2voto

Scott Points 1622

Eh bien, vous avez le problème de ğfrğ des styles et des scripts dans votre contenu. Le principal mantra est le DRY (Don't Repeat Yourself) Principe. Vous pouvez utiliser un script ou un style particulier à plusieurs endroits. Lorsque que le style ou le script nécessite la modification, vous devez maintenant aller sur une chasse au trésor pour tous les lieux où que ce code existe. Garder vos styles et des scripts dans un lieu commun est l'idéal.

D'autre part, s'il est mineur problème du style (en pixels ou en poussant quelque chose lié à une seule vue), c'est probablement acceptable.

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