• RSS
  • Domů na Webylon
  • Kritika W3C
  • Historie, CSS
  • K.21
  • Sen vodopádu

    25. května 2005

    Znám jeden sen. Co je jeho náplní? Obecné vyjádření informace prostřednictvím značkovacího jazyku doplněné prezentačními instrukcemi. Jinými slovy, oddělení obsahu od formy. Hm, a proč se to vlastně dělá?

    Webmaster si tím především usnadňuje práci. Zkušenost ho již naučila, že zobecnit přesné je pracnější, než upřesnit obecné.

    Původ myšlenky

    Víte, kdo vynalezl stylopisy? Na tuto otázku není úplně jednoznačná odpověď. V souvislosti s testem Acid2 se pějí ódy, že otcem CSS je Håkon Wium Lie. Nabízím vám fakta:

    Očividně, otec je poněkud nejistý.

    Myšlenka samotná

    Je známým faktem, že slůvko „kaskádové“ souvisí se selektorovou dědičností konkrétních stylů a vrstvením definic v rámci určitého stylopisu. Původ je ovšem jiný. Vznešenější. Spočívá v uspořádání těchto tří úrovní stylopisů:

    Tato obecná trojice by se měla krásně obecně přilepit k obecnému dokumentu. Na první pohled báječná idea. Na pohled druhý mírně nerealistická, naivní. Na třetí pohled překombinovaná, možná až nepraktická.

    Chyba myšlenky

    Jeden z nedostatků realizace zvolené koncepce spočívá v přehnané touze po obecnosti. Copak touze, to je přímo posedlost.

    Má-li být u skutečně obecného dokumentu jazyk stylopisů jednotný, musí podporovat úplně všechny způsoby prezentace, jakých je prohlížeč schopen. A to i tehdy, když pro danou vlastnost neexistuje jiné rozumné využití, než ono výchozí. Proto se v CSS 2 objevilo číslování. Kdyby snad někdy někdo pocítil nutkání očíslovat něco jiného, než číslovaný uspořádaný seznam, má možnost. Sláva!

    Chystané doporučení CSS 3 přináší ještě univerzálnější přístup: Chcete dokonale zblbnout uživatele? Není nic jednoduššího, než zobrazit na stránce falešné části uživatelského prostředí. Imitovaná tlačítka, přepínače, zaškrtávátka, cokoliv. Existence této možnosti zajisté potěší ty, kdož tvoří dokument v čistém XML a mají pod pohrůžkou smrti zakázáno užít jmenný prostor XHTML, z něhož by si mohli vypůjčit normální formulářové prvky.

    Potěší rovněž tvůrce reklamních proužků, na jejichž nevěrohodné imitace ovládacích prvků systému se už dnes málokdo nachytá. Konsorcium jim na zlatém podnosu dodá perfektní náčiní umožňující návštěvníka klamat. Touha po obecnosti nezná hranice...

    Moment! Poodstupte prosím.

    Všimněte si, kolik úsilí se věnuje formalizaci interního stylopisu prohlížeče. Kolika webmasterům budou tyto vymoženosti skutečně ku prospěchu? A kolika uživatelům? Ano, na ně bychom neměli zapomínat, koncepce nepočítá jen s webmastery. Už jsme však zapomněli [K.22]. Představte si prostého uživatele, jak si nadšeně píše stylopis. Jak úspěšně zvládá nástrahy vizuálního formátovacího modelu. Není to představa nerealistická? Naivní?

    Čím více je jazyk stylopisů univerzální, tím obecnější dokumenty dovoluje webmasterům tvořit a tím méně dokáží z oné obecnosti těžit uživatelé.

    CSS končí kousek před mnohem mocnějšími rysy, které programátoři užívají v programovacích jazycích: makra, proměnné, symbolické konstanty, podmínky, výrazy z proměnných atd. Je tomu tak proto, že tyto věci dají pokročilým uživatelům dlouhé lano, ale méně zkušené uživatele bezděčně pověsí; nebo spíše budou tak vystrašení, že na CSS ani nesáhnou. Je to rovnováha.

    Zdroj: Bert Bos (W3C), www.w3.org/People/Bos/DesignGuide/maintainability.html

    Selhání myšlenky

    Fundamentální chyba vedoucí k tomu, že jsou uživatelské stylopisy na okraji zájmu, je v samotném principu. Stylopis webmastera navštívené stránky je vložen mezi dva stylopisy na straně uživatele.

    Tyto kleště nejsou pohodlné. Většina webmasterů se z nich snaží okamžitě vymanit. Snaží se „přebít default“, vyrušit vliv stylopisu prohlížeče. Barva pozadí? K čertu s výchozí, bude tam moje! Barva písma? Moje! Písmo? Jeho velikost, proložení, řádkování? Moje! Webmaster vládne nejen obsahu, ale i jeho prezentaci. Není se zač stydět, toto chování je přirozené.

    I kdyby si dokázal prostý uživatel napsat obecně použitelný stylopis, mnoho výhod by mu to nepřineslo. Bez !important mu část vlastností přebije webmaster a s !important tomu bude naopak. Každé přebití je risk. Risk je zisk. Někdy.

    A někdy taky není: Uživatel má špatnou náladu a tak si usmyslí, že chce všude bílý text na černém pozadí. Primitivní požadavek, měly by tedy stačit primitivní znalosti. Zkusí toto:

    html, body { background-color: black !important; } * { color: white !important; }

    — a přijde na web, kde je na pozadí textu světlý obrázek. Nic nevidí. Otevře si svůj stylopis, upraví ho:

    html, body { background-color: black !important; background-image: none !important; } * { color: white !important; }

    — a přijde na web, kde je text v <div>u se světlým pozadím. Nic nevidí. Upravuje:

    * { background-color: black !important; color: white !important; background-image: none !important; }

    — a přijde na web, kde je kus menu řešen obrázky na pozadí <span>u uvnitř elementu <a>. Webmaster prozíravě počítal s možností, že návštěvník nevidí obrázky, proto pod <span> dal text. Chudák náš uživatel ovšem nic nevidí, neb má pozadí všech prvků nastavené na černou barvu. Navíc teď na mnoha webech nevidí loga. Nálada se zhoršuje. Otevře stylopis, upravuje:

    html, body { background-color: black !important; } * { background-color: transparent !important; color: white !important; background-image: none !important; }

    — a přijde na web, kde je menu pokládané skriptem přes obsah. Něco vidí! Avšak špatně, jelikož se položky menu mísí s textem pod ním. Řešení ho nenapadá. Je na dně. Otevře stylopis. Píše:

    Sbohem, krutý světe. Snažil jsem se vidět vše černě, ale nějak mi to nechodilo.

    — a odejde, s malým kouskem lana hledat strom. A to mu šlo prosím jen o barvu. Což teprve kdyby si usmyslel, že chce veškerou navigaci vlevo.

    Vodopád?

    Ale kdepak, žádný vodopád, žádná kaskáda. Technologie „Cascading Style Sheets“ je v praxi jen řeka snící o tom, že by vodopádem býti mohla. Kaskáda trojice stylopisů je spíše záležitostí teorie než praxe. Dobrá myšlenka dotažená ad absurdum ztrácí svůj půvab.

    V současnosti je prostý uživatel dávno ze hry. Kaskádové styly jsou na něj příliš překombinované. Prospěly by jim jiné evoluční kroky než formalizace prezentace zaškrtávátek. Kroky praktičtější. Třeba, kdyby někdo zavedl makra, podmínky a logické výrazy. Nemusí je nutně zavádět konsorcium. Jen si to zkuste představit.