• TwitterRSS
  • Domů na Webylon
  • Kritika W3C
  • Historie, CSS
  • 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á.

    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 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.