Sarà un'idea sbagliata avere uno stile nel corpo?

9

Nel codice seguente ho inserito un foglio di stile interno con tag body, invece di avere in testa. Per l'applicazione a pagina singola sto considerando di farlo per gli stili applicabili solo a quella pagina, invece di avere un file pagespecific.css separato.

C'è uno scenario in cui questo ha un rovescio della medaglia dato che non sto mettendo lo stesso in testa?

<!-- myPartial.html starts here --> 
<!-- Like to keep styles unique to this html right here in this file --> 
<div>
  <style>
    body { background-color: red; }
    #myText { color: white; }
  </style>

  <span id='myText'>Hello</span>
</div>
<!-- myPartial.html ends here --> 
    
posta Saran 16.01.2014 - 19:56
fonte

4 risposte

16

Un elemento style all'interno dell'elemento body viola le regole di sintassi HTML. (Tranne che, in base alle bozze HTML5, è consentito in alcune condizioni, se sono presenti gli attributi scoped , questo attributo è supportato da alcuni browser.) D'altro canto, i browser non sono interessati. La divisione in head e body elementi è teorica.

Tuttavia, non ottieni nulla usando la sintassi non valida, come opposto al posizionamento di style in head . L'unica scusa potrebbe essere la limitazione tecnica, in alcuni ambienti di authoring, che potrebbe impedirti di inserire qualcosa nella parte head .

Il problema dell'utilizzo di un elemento style rispetto a un foglio di stile esterno tramite link è completamente ortogonale a questa domanda.

    
risposta data 16.01.2014 - 20:41
fonte
3

(Dato che siamo qui alla SE.SX, un approccio più strategico potrebbe essere un valido ampliamento alle solite considerazioni tecniche.)

[preambolo] Le specifiche HTML5 sono un obiettivo in continua evoluzione e hanno una politica di follow-up sulla pratica comune consolidata. Hanno caratteristiche obsolete e risuscitate in passato, hanno cambiato il significato degli altri, spostato l'attenzione su raccomandazioni metodiche, ecc. Non è scritto per l'eternità con tutta la saggezza dell'umanità disponibile tutto in una volta. Le specifiche non sono una sacra fonte di verità. È naturale che a volte i browser abbiano ragione. [/ Preambolo]

La situazione dell'OP è in modo schiacciante comune e valido.

Hai un CMS, con il suo tema progettato e installato, tutti i CSS caricati correttamente da HEAD, poi ci sei, l'editor di pagine, lasciato con una scatola WYSIWYG alla moda che puoi (grazie a Dio!) passare a "source" mode "e digita (incolla) nel markup HTML (precedentemente creato altrove, con strumenti più adatti). Fortunatamente puoi persino includere% tag diSTYLE (forse a causa di un'omissione fortuita in un filtro di tag) ... Il giorno viene salvato, da un sacco di lavoro ripetitivo e distruttivo che distrugge l'anima. Ma non hai ancora alcun mezzo per interferire con l'elemento HEAD del sistema da uno scenario di modifica della pagina.

Dovresti derubarti dall'usare il tuo CSS in modo semplice con i tuoi frammenti HTML, solo perché la specifica lo dice?

Oppure, hai un'applicazione AJAX a pagina singola.

Funziona senza ricarica per una lunga sessione, e ci sono contenuti in sindacato provenienti da varie fonti casuali, tutti in stile arbitrario e indipendente. Richiedere che vengano convertiti per la prima volta in modo che utilizzino solo gli attributi inline STYLE invece di venire solo con un elemento STYLE incorporato sarebbe assurdo.

Inoltre: puoi a) incorporare già qualsiasi CSS in BODY , tramite attributi STYLE , quindi il CSS è "teoricamente" legale in ogni caso; e b) puoi già fare qualsiasi cosa tu voglia con qualsiasi stile, ogni volta che vuoi (e più) da Javascript, così anche i CSS possono abusare in modi patologicamente non performanti. E nessuno di noi obietterà mai quelle caratteristiche. Né fa il W3C.

Quindi, cos'è esattamente così male su STYLE elementi in BODY ? Quali sono queste implicazioni extra negative che aggiungerebbero al nostro ampio arsenale di abusi nei costrutti HTML? Più prestazioni scadenti? Probabilmente. A volte.

È una valida ragione per abolire questa pratica incredibilmente utile, supportata da ogni browser per una ragione? Non in un milione di miglia!

Non siamo idioti. Beh, non tutto, o non sempre ...;) Le tecniche con il rischio di scarse prestazioni potrebbero semplicemente essere documentate , piuttosto che proibite. Avevamo le applet Java nei primi giorni del web e siamo sopravvissuti. Le automobili possono essere utilizzate in modo improprio, causando sofferenza, persino il cibo può essere utilizzato in modi inefficienti e inquietanti, ei conducenti che possono mangiare possono essere, in media, ancora più stupidi rispetto al web designer medio. Inoltre, caro W3C, non c'è bisogno di preoccuparsi: le mandrie arrabbiate di tinker HTML che hanno le gambe abbattute con STYLE elementi nella BODY non possono ancora andare dopo il W3C e vendicarsi. Non conoscono l'indirizzo. E non hanno gambe.

Quindi, per favore: fai sentire la tua voce per STYLE diventando legale in BODY ! Citare obbedientemente il testo, ma non fornire una valida alternativa che sia migliore della situazione attuale non è di alcun aiuto. In realtà è una minaccia per questa tecnica di soluzione alternativa.

Ricorda: la specifica HTML5 è chiamata raccomandazione .

    
risposta data 02.02.2017 - 22:09
fonte
2

La specifica html afferma che

A style element without a scoped attribute is restricted to appearing in the head of the document.

L'attributo scope è un valore booleano che indica che dovrebbe essere applicato solo al sottostruttura radicata nell'elemento padre dell'elemento style.

Al momento solo Firefox supporta l'attributo scope. link

    
risposta data 17.01.2014 - 07:53
fonte
1

Ci sono alcuni motivi tecnici per avere il tuo css in un file rispetto a un tag di stile:

  • La possibilità di usare un minificatore css (non credo che i minificatori lavorino sui tag di stile)
  • Per consentire al file css di essere memorizzato nella cache dal browser.

Alcuni motivi basati sull'opinione per usare un file:

  • Puoi usare un meraviglioso preprocessore CSS come Sass (Compass) o Less.
  • Stai mantenendo due modi per aggiungere css alla tua applicazione.

La mia preferenza personale è usare Bussola per conservare file separati per ogni pagina e quindi usarli per compilarli tutti in un unico file. Quel singolo file sarebbe incluso in ogni pagina. Se in fondo alla strada i file devono essere separati per qualsiasi motivo possano sempre essere, ma nel frattempo non ne vale la pena.

    
risposta data 16.01.2014 - 20:29
fonte

Leggi altre domande sui tag