Domanda

A rigor di termini, non style i tag devono essere all'interno del head di un documento HTML?Il 4.01 standard implica che, ma non è esplicitamente affermato:

L'elemento di STILE permette agli autori di mettere il foglio di stile regole nella testa di il documento.HTML consente a qualsiasi numero di elementi di STILE nella sezione HEAD di un documento.

Io dico che "a rigore" perché ho un app che mette elementi di stile all'interno del corpo, e tutti i browser, ho provato con sembrano utilizzare gli elementi di stile.Mi chiedo solo se questo è in realtà giuridica.

È stato utile?

Soluzione

style dovrebbe essere inclusa solo sulla head del documento.

Oltre al punto di convalida, un avvertimento che potrebbe interessarti quando si utilizza style sul body è il lampo di contenuti senza stile . Il browser otterrebbe elementi che essere in stile dopo essi vengono visualizzati, che li spostano sulla dimensione / forma / font e / o di sfarfallio. In genere è un segno di cattiva dell'artigianato. In generale si può ottenere via con mettere style ovunque tu voglia, ma cercare di evitare che ogni volta che è possibile.

HTML 5 ha introdotto un attributo scoped che ha permesso tag style da includere in tutto il corpo, ma poi hanno tolto di nuovo.

Altri suggerimenti

Mentre le altre risposte sono corrette, sono sorpreso che nessuno ha spiegato , dove gli standard non consentire stili di fuori di head.

In realtà è nella sezione relativa Il head elemento (e nel 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 -->

Sì, lo so. DTD sono difficili da leggere.

Questo è l'unico luogo in cui si verifica l'elemento STYLE, quindi implicitamente è valida altrove.

Secondo le ultime WhatWG e specifiche W3C, sì, style elementi deve sempre nel head.Per un po', le specifiche incluso un scoped attributo per style elementi che, quando presente, ha permesso loro di essere collocato all'interno di un elemento nel corpo solo per lo stile di quell'elemento discendenti...ma che funzione mai fatto ad un vero e proprio browser (almeno non senza il bisogno di essere attivata tramite un developer bandiera) ed è stato rimosso da entrambe le specs "a causa della mancanza di realizzatore di interesse".Di conseguenza, style gli elementi sono ora ammesse solo in contesti che permettono contenuto dei metadati, che è solo la testa.

(Okay, non abbastanza vero, si può legalmente mettere il contenuto dei metadati, tra cui style elementi, all'interno di un template elemento all'interno del body, ma in realtà non hanno effetto, se siete in un browser che supporta i modelli.Questo è davvero solo uno stupido cavillo.)

Il WhatWG spec ha questo da dire:

4.2.6.Il style elemento

Categorie:

Contenuto dei metadati.

I contesti in cui questo elemento può essere utilizzato:

Dove contenuto dei metadati è previsto.
In un <noscript> elemento che è figlio di un <head> elemento.

CTRL-Fing attraverso il a pagina singola spec rivela che l'unico elemento di cui il modello di contenuto include i metadati contenuti è il head elemento.

Nel frattempo, il ultima W3C progetto di spec contiene esattamente identica formulazione, eccetto per il fatto che anche un elenco di metadati contenuti nel modello di contenuto di template elementi.(WhatWG conceptualises templates in modo diverso e liste di la loro modello di contenuto come nothing.)

Il non-normativi indice di elementi il WhatWG spec conferma che la sola ammissibile genitori per un style elemento sono head o noscript elemento.(W3 versione dello stesso indice erroneamente afferma che il flusso di contenuto può contenere <style> elementi, ma questo è un errore introdotto dal W3C, al momento della rimozione del scoped attributo.Ho una richiesta di pull aperto a risolvere il problema.)

Essi non dovrebbero andare al di fuori della testa, ma funzionano in ogni caso; anche se si potrebbe notare un rapido sfarfallio. Il sito non deve convalidare con il tag stile al di fuori della testa, ma non che realmente importa? Inoltre, tag link lavorano fuori testa pure, anche se non si suppone.

Come le altre risposte hanno dichiarato che in realtà non ha bisogno di essere lì. Tuttavia, non convaliderà. Questo può o non può importa in questo caso, ma vi prego di tenere a mente che il rendering di HTML è interamente a browser. Da quello che so tutti i browser utilizzati di oggi sosterrà metterlo fuori dalla testa, ma non si può garantire che per il futuro browser e versioni future del browser.

Stick con lo standard e si è più sicuro. Quanto più sicuro è in su per molto molto dibattito.

Un tag stile ovunque, ma all'interno della <head> non convaliderà con le regole del W3C.

Il HTML5.2 raccomandazione del W3C, 14 dicembre, 2017 (non la precedente bozza di cui sopra), ora dice che si può includere <style>.

  

"nel corpo, dove si prevede di contenuti di flusso."    (paragrafo 4.2.6)

Secondo questo sito, HTML5.1 (in bozza) e WHATWG permettono il tag <style> da mettere nel corpo:

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

Sembra anche che sia stato sostenuto dai browser per un bel po '. Secondo questa risposta StackOverflow, Firefox 3+, IE6 +, Safari e Chrome 2+ 12+ lo supportano:

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

In base alle specifiche HTML 5.2 (in bozza), il tag di stile è consentito solo nella testa di un documento.

HTML 5.2 Progetto su Style Tag (18 ago 2016)

  

Un elemento di stile è limitato ad apparire nella testa del   documento.

È possibile utilizzare tag di stile all'interno della sezione di testa o di una sezione del corpo o anche al di fuori dei tag html anche (fuori html laterale non è consigliato). Nei progetti in tempo reale molte volte si può vedere che utilizzano tag di stile fuori dal lato del tag html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top