Zobrazují se příspěvky se štítkemstyle. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemstyle. Zobrazit všechny příspěvky

neděle 1. července 2007

Obecné stylesheety pouze v hlavičce

Před měsícem jsem ve spotu Obecné stylesheety pouze v hlavičce? psal o debatě mezi Hyattem a Glazmanem na téma <style> pouze v hlavičce.

Nedávno byl výsledek zanesen do specifikace. V té v tuto chvíli o <style> stojí:
Contexts in which this element may be used:

If the scoped attribute is absent: in a head element.
If the scoped attribute is absent: in a noscript element that is a child of a head element.
If the scoped attribute is present: at the start of article, aside, div, and section elements.
Pokud dobře čtu DTD HTML4, tak samotné <style> bylo povoleno pouze v hlavičce dokumentu. Takže podstatnou změnou je pouze zavedení <style scoped>.

Pozorný čtenář si mohl všimnout další, byť nesouvisející změny a tou je povolení <noscript> v hlavičce dokumentu, které v HTML4 nebylo (HTML4 povolovala v hlavičce <script> ale již nikoliv <noscript>), více viz vlákno v mailinglistu. Kromě možnosti CSS aplikovaného pouze v případě vypnutého JavaScriptu se nabízí využití pro metarefresh, pokud je zapotřebí průběžně obnovovat stránku a oddělit JavaScriptové řešení (používající např. XHR) a klasický metarefresh.

pondělí 28. května 2007

Obecné stylesheety pouze v hlavičce?

David Hyatt v pátek napsal:
Unscoped <style> found outside the <head>

Please make this non-conforming. I don't think we should encourage this bad practice.
HTML5 v tuto chvíli podporuje vložení stylesheetu i na specifických místech dokumentu např. na začátku každého <divu> a Hyattovi se tento přístup nelíbí.

Zajímavá byla reakce předsedy Dana Connollyho:
I wonder who you are directing this request to. You're an editor. If you want the spec to change, please change it and let us know.
Kdo pečlivě sleduje všechny změny specifikace možná tuší, na co narážím (ne každá změna je vždy veřejně diskutována, v tak velikém počtu to někdy ani nejde, některé jsou prostě vloženy do specifikace a čeká se, jakou vyvolají reakci), ale o tom někdy příště.

Hyattovu návrhu oponoval Daniel Glazman:
I am not sure this is bad practice and I see this as a very interesting thing for wysiwyg copy/paste between two different document instances. Can you please detail why it is bad practice ?
Glazman je mimo jiné autorem editoru Nvu a není divu, že má trochu praktičtější pohled. V dnešním světě plném redakčních systému autoři obsahu ne vždy mají možnost zasahovat ho hlavičky a přidat vlastní styly někdy potřebují.

Hyatt nicméně svou připomínku rozvedl. Ve svém požadavku totiž nezakazoval vkládání všech stylesheetů, ale jen unscoped styleshteetů (obecných stylesheetů):
Scoped style is a new feature of HTML5.

http://www.whatwg.org/specs/web-apps/current-work/#the-style

I am proposing that be allowed anywhere, but that should only be conforming if used inside the head. I do not believe anyone has presented a valid use case for using unscoped outside of the , and given the performance impact it will have on the display of Web pages, the practice should be strongly discouraged.

I think "scoped" should be even more limited than it already is, and that the HTML5 spec should limit the scoping to nodes that follow the in a pre-order traversal of the tree.
Scoped (cílené) stylesheety se aplikují pouze element a potomky elementu, do kterého byl stylesheet vložen. Pokud bych například do článku tohoto příspěvku vložil cílený stylesheet, aplikoval by se pouze na tento článek (je celý ohraničen divem) a nikoliv na zbytek stránky. Což je ostatně přesně to, čeho bych jeho vložením chtěl docílit.

Debata ještě neskončila, pokud jí chcete sledovat, čtěte vlákno začínající Hyattovým příspěvkem.