Jan Brašna | HereBeDragons™

CSS 2.1 nám dospívá

Tak poslední revize dvojkového CSS nám opět trochu dospěla, od předminulého týdne už není kandidátem na doporučení, ale pracovním draftem pro zohlednění změn.

CSS 2.1 opravuje několik věcí v CSS 2, které byly buď považovány za nepoužitelné či nepraktické, nebo překážely v dalším přechodu na CSS 3. Jednalo se o některé parametry direktiv @font-face či @page, které jsou dále otevřeny k dalšímu řešení (zbylo pouze řízení tiskového stránkování, podrobné řízení stránkového boxu nebo vlastní typografie byly odstraněny), o části vizuálních úprav legendy tabulky či stínování a zhuštění textu, o vlastnosti ořezu a rozměry pozicovaných elementů, o netradiční způsoby zobrazení (compact či marker) a je také upraven význam médií speech a aural.

CSS 2.1 je tedy svým způsobem reakce CSS 2 na praxi.

Po roce a půl ze z CSS 2.1 Candidate Recommendation stává Working Draft („Last Call“ pro přestudování změn).

Znamená to, že nebyly zásadní potíže v implementování, až na několik drobností – každá vlastnost musí mít alespoň dvě kompatibilní implementace. Tady bych viděl ACID2 jako onen hybný motor. Ačkoliv to byl čistě akademický test, mohl by tímto mít i praktické důsledky.

Pracovní skupina za problematické při nasazování ale i tak určuje několik vlastností, kterým tímto hrozí vyřazení ze specifikace. Jsou to exotická číslování seznamů (uvažuje se o přesunutí až do CSS 3), několikanásobné ID selektory, algoritmus formátování tabulek a výpis „lokalizovaných“ uvozovek.

Ve specifikaci došlo k několika změnám, bylo upřesněno nakládání s tiskovým rámcem, vypadlo URI pro definování vlastnosti content: (Dušan Janovský mě upozornil v komentářích, že to tak není, <uri> se jen mezi revizemi lehce měnilo), bylo přidáno několik procesů pro vykreslování tabulek.

Celý přehled změn v dokumentu je možné prostudovat na adrese http://www.w3­.org/…f/cover­.html

BTW dotázal bych se okolí na jednu věc – tradovalo se, že pozicované a plovoucí elementy musí mít deklarován rozměr, a že plovoucí prvky nelze dále pozicovat. Dle mého je toto pouze v CSS 2 a bylo to odstraněno z CSS 2.1 – mohl by mi to někdo potvrdit?

Úterý, 28. 6. 2005 3.34 | Trvalý odkaz | Trackback

9 komentářů

  1. [1] Jan Bien

    K Tvé otázce, Honzo:

    1. Plovoucí a pozicované elementy podle CSS2.1 nemusí mít vlastnost width deklarovanou, ta se vypočítá podle obsahu boxu podobnou metodou, jakou se vypočítávají šířky buněk v tabulkách. Takto se naštěstí všechny dnešní prohlížeče chovají (jen MSIE je třeba zároveň podsunout display:inline).

    2. O kombinaci pozicování (tím myslím position:absolute) a plování CSS 2.1 nic nehovoří. Jestliže se prvku nastaví position:absolute, klient by měl automaticky nastavit float:none.

    28. 6. 2005 11.36

  2. [2] Jan Brašna

    Jan Bien) Díky Honzo, takže skutečně ad 1) „skrink-to-fit“ je normativní? Nevěděl jsem, jak hodně je standardizováno; ad 2) měl jsem na mysli to, že plovoucí rámec lze dál pozicovat relativně (absolutní je jasné, to je přímo ve specifikaci, že vyjmutím z toku je „odplaváno“ ;) Ale kdysi tuším Plaváček někoho káral za použití float + position: relative a dle mého je to od 2.1 košér)

    28. 6. 2005 14.20

  3. [3] Jan Bien

    1. Ano, ve změnovém dokumentu je doslova toto: When both ‚width‘ and ‚right‘ (or ‚width‘ and ‚left‘) are ‚auto‘, the element's computed width is the width of the contents (using an algorithm similar to that for table cells) and then ‚right‘ (or ‚left‘) is solved. CSS2 incorrectly said that ‚right‘ (or ‚left‘) was set to 0 in that case, and then width was solved. Nazývají to „shrink-wrap“ a je tedy normativně určen. Znovu podotýkám to nejdůležítější: dnešní prohlížeče to umí. 2. Je fakt, že v CSS2 je relaitvní pozice jako podmnožina normálně řazených boxů. Nic vysloveně psáno o relativní pozici na plovoucích boxích jsem nenašel. V CSS2.1 již píší, že relativní pozice je pro plovoucí prvky povolená. A stejně jako v předhozím bodě dobrá zpráva: dnešní prohlížeče relativně posouvat plovoucí boxy umí. Já to běžně používám.

    28. 6. 2005 15.27

  4. [4] Yuhů

    Pěkné shrnutí.

    Že by ale z vlastnoti content vypadla hodnota uri(), si nemyslím. Vede mě k tomu tento dokument: http://www.w3­.org/…enerate­.html kde je sice formulace hodnoty uri mírně pozměněna, ale zůstává tam.

    28. 6. 2005 16.44

  5. [5] Jan Brašna

    Jan Bien) Díky za potvrzení, ono to fungovalo vždy, ale v dobách minulých (= CSS 2) to bylo považováno za chybu.

    Yuhů) Dušane, máš pravdu, nedalo mi to, a trochu jsem to prozkoumal, a je to naopak – bylo vyškrtnuto odstranění <uri> ze změn, tudíž se tam opět vrací (IMHO bylo z nějaké verze odstraněno).

    28. 6. 2005 17.29

  6. [6] Chamurappi

    Dospívá? Working Draft je fáze předcházející Candidate Recommendation: http://www.w3­.org/…0205/tr­.html#cfi Celý W3C Process před pár lety pěkně zakreslil do podoby hracího pole Ian Hickson: http://ln.hixi­e.ch/?… W3C nyní učinilo krok zpátky. Poslalo specifikaci na převýchovu. Až bude převychována, stane se opět Candidate Recommendation nebo přeskočí rovnou na Proposed Recommendation (nepravděpodobné).

    Vliv testu Acid2 je zřejmý. Ostatně jeho autor je pod dotyčnou specifikací podepsaný. Viz můj článek.

    29. 6. 2005 2.06

  7. [7] Jan Brašna

    Chamurappi) Ano, dospívá, upravují se věci, které stále brání slušné implementaci, tudíž dalšímu progresu. Tvůj zalinkovaný článek má bohužel pravdu. Jinak ano, WD je v postupu vydání doporučení dříve než CR, ale WD „Last Call“ je potřeba pro promítnutí změn v draftu:

    „The deadline for comments is 15 July 2005. We expect the draft to return to CR soon after that and then remain CR at least until the test suite is ready. The Working Group invites feedback on the document.“ – Björn Höhrmann

    29. 6. 2005 16.06

  8. [8] Petr Staníček

    Otázka, Jan Bien ad. > Je to malinko jinak. dalo by se to shrnout do formulace „Tak tuhle bitvu podle všeho vyhrál Microsoft“.

    Povinná šířka floatů je v CSS 2 (kap. 9.5, odst. 2) a toto chování respektuje jádro Gecko (a myslím že i KHTML a další). Zatímco MSIE stále používá svůj algoritmus „shrink-to-fit“ a zobrazí float s width:auto o nějaké šířce (zatímco třeba Mozilla ho roztáhne na plný dostupný prostor). V CSS 2.1 tenhle požadavek zmizel a objevila se zde právě formulace „shrink-to-fit“. A protože i do další verze postoupilo tohle pojetí, dá se říct, že tohle Gecko a spol. prohráli a svou variantu prosadil Microsoft.

    Osobně vidím pozitiva v obou variantách, každá má něco do sebe a každá se dá uhádat, že je přece jasně lepší. Nicméně jsem spíš zastáncem té mandatorní šířky, protože je to méně černá magie a méně blackbox než tyhle tipovací algoritmy…

    1. 7. 2005 20.23

  9. [9] Jan Bien

    Ad [8] Petr Staníček: Díky za doplnění, historie prohlížečů mi není tak dobře známá.

    Je pravdou, že tyto „tipovací algoritmy“ (krásný termín, ten si zapamatuji) kladou větší nárok na klienta (ostatně, je to někdy radost právě s buňkami v tabulce, jejichž šířka není explicitní, ale minimální), nicméně si nedokáži některá řešení bez „shrink-to-fit“ představit. Čili souhlasím, obě řešení mají co do sebe.

    2. 7. 2005 17.17

RSS komentářů

Vaše postřehy

FinePrint™: Pokud máš chuť plkat mimo téma spotu nebo se tady navážet do ostatních, máš šanci, že komentář půjde do křemíkového pekla. Účelové nebo anonymní příspěvky budu dle rozmaru a bez vysvětlování likvidovat. Podepiš se; pokud se k napsanému nehlásíš, ani to neodesílej. Diskusi mám rád, ne už tak flame a blbce. Mysli na to při psaní.