Hlavní navigace

Proměnné v CSS. A není to chyba?

13. 8. 2008 21:00 (aktualizováno) | Martin Hassman

Na jaře s nástupem nových předsedů CSS WG se objevil návrh zavedení proměnných do CSS. Začátkem léta se objevila jejich první implementace (WebKit). Jásot se nesl celým Internetem a byl slyšet i tady v Čechách.

Ne každý ovšem jásá, například bývalý předseda CSS WG Bert Bos (mimochodem spolutvůrce kaskádových stylů) je z nich poněkud rozpačitý. Své rozpaky vyjádřil v eseji Proč jsou proměnné v CSS zhoubou:

Jakákoliv forma maker nebo dalších možností včetně symbolických konstant je nejen zbytečná, ale změní kaskádové styly způsobem, který je nevhodný pro jejich uživatelskou základnu. Jelikož v tuto chvíli neexistuje ke kaskádovým stylům žádná alternativa, tyto věci nesmí být zahrnuty.Některá rozšíření kaskádových stylů si lidé žádají již od počátku (nyní už 14 let), ale přesto do kaskádových stylů nepatří. Jedná se o rozšíření, která přibližují kaskádové styly programovacímu jazyku (na rozdíl od rozšíření o podporu dalších typografických vlastností). Na první pohled vypadají pro pokročilé uživatele užitečné, ale ve skutečnosti nejsou a jsou zhoubné pro „sémantický web“, tj. pro myšlenku znovupoužitelnosti informací.

Hlavní argument je velmi stručně řečeno, že kaskádové styly budou prostě příliš složité (pokud přemýšlíte, co je na tom tak složitého, přečtěte si celou esej). Zaujalo mne, že Bert Bos u každé z přidávaných vlastností v CSS3 zvažuje nejen, zda mají nějaký přínos, ale zda mají dostatečný přínos na to, aby vyvážili zkomplikování celých kaskádových stylů. A u proměnných podle Berta Bose přínos (využití pár profesionály) nepřevažuje. Ať už s tím souhlasíte nebo ne, doporučuji přečíst celou esej. Je zajímavé vidět pohled člověka, který vtiskával kaskádovým stylům jejich původní podobu.

Jak už to na internetu chodí, netrvalo dlouho, aby se objevily reakce, odkažme alespoň Why adding variables to  CSS is a good thing a Why CSS Variables are harmful : the pragmatic answer.

Bert Bos

Shrnoval jsem si, co o Bertu Bosovi vím. Tak bude počítám dobrý v typografii, je to Linuxový (nebo Unixový – nevím přesně) geek, zabýval se designem uživatelských rozhraní. Zároveň bude dobrý programátor (autor webového prohlížeče Argo) a zajímal se intenzivně o vývoj HTML (v roce 1994 vytvořil vlastní nerealizovaný návrh HTML, ve kterém navrhoval věci, které se postupně realizují až dnes). Ale pokud vím, NENÍ (a nejspíš nebyl) webový designer (ve smyslu, že by tvořil jeden web za druhým).

Zapadá mi to dohromady s tím, že ačkoliv já po proměnných v kaskádových stylech nevolal (na druhou stranu mi nijak nevadí), právě lidé, kteří mají webdesign jako svou hlavní činnost, je nejvíce chtějí. Možná proto Bert Bos ve svých úvahách upřednostňuje teoretický pohled, když volá, že proměnné v kaskádových stylech časem přinesou problém a měly by být implementovány leda jako samostatný na CSS zcela nezávislý modul. Já takový pohled nemám, tak tomu nerozumím.

Jak to dopadne

Nejspíš vás zajímá, jak celá tahle pohádka skončí. Není tak těžké to uhodnout. Současný předseda CSS WG je proměnným v kaskádových stylech nakloněn, webdesignerská obec jásá jako nikdy předtím, dávám kurz 10:1, že to celé projde.

Vliv jednotlivce

Pro mne z toho plyne ještě další ponaučení. Nedávno jsem si myslel, že zavedení proměnných do CSS v den nástupu nových předsedů (a odchodu Berta Bose do předsednického „důchodu“) byla náhoda. Dnes mám názor opačný. Vypadá to, že možná právě Bert Bos jejich začlenění dlouho blokoval.

Čas od času snad každý z nás nadává, že W3C neudělá tohle, nepřidá tamto. Jenže on to často nebude problém organizace W3C jako takové, ale toho, že na daném místě je člověk, který věci zrovna vidí jinak. A to je vždy věc dočasná. Předsednictví CSS WG se změnilo a já jako bych cítil, že těch změn, kterých se v kaskádových stylech dočkáme, bude ještě víc. (Zdrojem onoho pocitu jsou i některé zprávy ve twitteru Daniela Glazmana, jednoho z předsedů).

BTW nerad bych, aby si někdo mé výtky vůči Bertu Bosovi vykládal jinak než jsou myšleny. Podle mě je to moudrý pán, jen některé věci vidí prostě trochu odlišně a až čas ukáže, zda měl či neměl pravdu.

(Via Why „variables“ in CSS are harmful)

  • 10. 8. 2008 15:43

    David Majda (neregistrovaný)

    Myslím že Bert Bos je svým názorem a argumentací úplně mimo mísu.

    Na CSS je dle mé osobní zkušenosti (přímé - když jsem se učil CSS já - i nepřímé - když jsem něco někomu vysvětloval) nejtěžší na pochopení samotná myšlenka kaskády. I po X letech používání jsem si jistý, že by nebylo vůbec těžké zkonstruovat příklady, kdy bych nevěděl, které pravidlo se použije a bude mít přednost. Oproti tomuhle je myšlenka konstant pochopitelná každému, kdo někdy nahrazoval jeden řetězec druhým v editoru a pochybuju, že by s ní měl někdo někdy problém při učení CSS.

    Navíc - kdo nechce, nemusí konstanty/makra vůbec používat (narozdíl třeba od samotné kaskády). Je to stejné, jako třeba v TeXu: tam mi teď při psaní diplomky vůbec nijak nepřekáželo, že TeX má poměrně pokročilý mechanismus maker. Prostě jsem ho nepoužíval (nepotřeboval jsem) a s TeXem jsem pracoval jako s trochu lepším HTML.

    Poslední argument: Konstanty/makra podporují princip DRY (Don't Repeat Yourself). Tuhle základní programátorskou zásadu CSS nyní nedovolují dodržovat. Pokud je někdo proti nástroji, který ji dodržovat umožňuje, je pro mě velmi silný signál o nesprávnosti jeho názoru. (Samozřejmě rozumím tomu, že každá podobná funkce má svou cenu v podobě zvýšení složitosti. Ale jak jsem napsal výše, myslím že tady je cena prakticky nulová. Podobná argumentace má smysl u plánovaných uzávěrů v Javě 7 či nových expression closures v JavaScriptu 1.8, ne u konstant v CSS.)

  • 10. 8. 2008 16:23

    Pavel Cvrček (JasnaPaka) (neregistrovaný)

    [1] "Navíc - kdo nechce, nemusí konstanty/makra vůbec používat...". Tenhle argument slýchávám v mnoha podobách často. Proti této větě skutečně nelze nic namítnout, ale v takovém případě se omezujeme jen na vlastní kód. Pakliže se ke mně dostane cizí kód a já budu nucen jej pochopit a případně modifikovat, pak jsem nucen tyto věci znát a případně umět použít.

    Jinak tvůj názor vychází z pohledu vývojáře. Jsem také vývojář a chápu, proč jsi příznivcem proměnných v CSS. Na druhou stranu bych nebyl vůči Bertu Bosovi tak kategorický. To, co nám oboum totiž chybí, je pohled zezdola tj. pohled člověka, který se zrovna rozhodl naučit ty CSS, o kterých slyšel od kamaráda.

  • 10. 8. 2008 17:50

    tiso (neregistrovaný)

    Ťažko povedať na ktorú stranu sa prikláňam ja. Problém je totiž v spätnej kompatibilite - CSS3 premenné sa totiž v non-CSS3 zariadeniach nebudú nastavovať. Staré zariadenia totiž budú ignorovať nie len at pravidlo @variables, ale aj samotné použitie var premenných (background: var(someVaria­ble);). Ako potom budú vyzerať stránky?
    Na druhej strane CSS premenné sú veľmi užitočné práve kvôli tomu DRY princípu.
    Ako z toho von? Sú 2 možné riešenia:
    1. Zmena spôsobu písania CSS - nastavenie vlastnosti len raz:
    selector1, selector2, ...{background: #FFF none;}
    +nepotrebujeme CSS premenné
    -rozhodenie selektorov, ťažšie na vyznanie sa v CSS
    -zmena vlastností časti selektorov sa nedeje prepísaním vlastnosti, ale odstránením selektorov s pred jednej zátvorky a pripísanie k druhej...
    2. CSS pre-processing. - píšem si súbor s CSS premennými, ale ten je pred použitím stránky prehnaný parserom a tak stránka dostane klasický CSS súbor
    +využívam výhody CSS premenných
    -CSS súbor sa musí pred použitím spracovať
    Skončil som pri druhej možnosti. Samotný parser má v PHP do 30 riadkov, zároveň odstraňuje zbytočné znaky a komentáre, ktoré sú pre spracovanie zariadenach zbytočné, prenáša sa menej bytov.
    Výsledok? CSS premenné v špecifikácii alebo ich podporu v zariadeniach vlastne nepotrebujem.

  • 10. 8. 2008 18:14

    David Majda (neregistrovaný)

    [3] S námitkou ohledně cizího kódu máš pravdu.

    Máš taky pravdu, že nám tady (asi všem) chybí pohled nováčka. Jak jsem ale už řekl, tohle je tak snadno pochopitelná funkce, že pochybuju o tom, že by její popchopení byl nějaký problém prakticky pro kohokoliv. To už bych se spíš pozastavil třeba nad generovaným obsahem, countery, margin collapsingem nebo některými aspekty chování floatů.

    Filozofii "začleňovat nové funkce s rozmyslem" chápu a podepsal bych se pod ni, ale tohle je IMO zorvna dost jednoznačný případ.

    [4] Ano, když člověk umí nějaký programovací jazyk nebo aspoň sed, napíše si nějaký jedoduchý replacer za chvíli. Jenže to musí buď umět programovat (značná část lidí, co znají HTML a CSS, to nenumí, nebo neumí dostatečně dobře) a mít čas/chuť si nástroj napsat nebo ho najít napsaný. Jeho použití pak komplikuje deployment a ladění webu - buď se nesmí zapomenout CSS vygenerovat po každé úpravě proměnných/CSS (a to se zapomene často, protože málo lidí dělá deployment skriptem, který by to zvládl automaticky), nebo musí být nástroj nasazen online přímo na stránce.

    Závěr: Mít tento nástroj integrovaný v prohlížeči zjednodušší život i tomu, kdo si ho je schopen nahradit sám.

    Se zpětnou kompatibilitou bude problém vždycky, to vyřeší jen čas. CSS má naštěstí rozumně (a přesně!) definovaný error-handling, takže potká-li prohlížeč neznámou konstrukci, jsou následky předvídatelné a obvykle minimální.

  • 10. 8. 2008 19:19

    tiso (neregistrovaný)

    ...sorry za chyby v [4], slabo som si to po sebe čítal...

    [5] Automatické fungovanie toho parsera je samozrejmosťou, inak by mi to nepomohlo. Sú v podstate 2 možnosti:
    1. parser sa nalinkuje miesto CSS súboru, načíta CSS3 vstup a vráti preparsovaný výstup, so správnymi hlavičkami samozrejme. Takže je zabezpečené automatické spustenie.
    2. parser zoberie vstupný súbor preparsuje ho a uloží ako výstupný súbor. Automatické spustenie sa musí zabezpečiť inak. (Už tu chýba len zdroják, že?)

    Ku kompatibilite: Ten error-handling znamená, že do pravidiel prístupnosti o závislosti na technológii pribudne ďalší problém: zobrazenie webu s CSS premennými. Webdesigner musí zaistiť aby stránka bola čitateľná aj pre non-CSS3 zariadenia. A dá sa to len jedným spôsobom - duplikácia vlastností - vlastnosti nastavené cez CSS premenné musí nastaviť aj normálne, buď kompletne, alebo aspoň v základnej "kompatibilnej" miere. Takže výhoda CSS premenných je v ťahu. Nehovoriac o problémoch pri zmenách, kedy zabudne spraviť zmenu na všetkých miestach.

  • 10. 8. 2008 19:26

    Martin Hassman (neregistrovaný)

    tiso: Se zpětnou kompatibilitou tu není větší problém než přidávání jakýchkoliv jiných nových CSS fýčur (včetně selektorů). A i tady lze použít graceful degradation. Čili problém to je, ale řešitelný stejně jako se dnes běžně řeší zpětná kompatibilita.

  • 10. 8. 2008 20:06

    tiso (neregistrovaný)

    [7] - ja to vidím inak... CSS premenné sa totiž budú používať kvôli DRY na vlastnosti ktoré sa často opakujú. A ktoré to sú?
    1. farby (pozadie, text, ...)
    2. rozmery (šírka, margin, ...)
    Na iné použitie CSS premenné nemajú veľmi význam. Predstav si čo sa stane, keď sa web s elegantným CSS s pár premennými, ktoré sú ale použité na x miestach, zobrazí v non-CSS3 prehliadači... Nápoveda: {background: ;color: ;width: ;border: ;} Riešenie, ktoré však potopí výhody CSS premenných, som písal vyššie.

  • 10. 8. 2008 20:21

    Martin Hassman (neregistrovaný)

    tiso: Nebude problém jim pro graceful degradation přiřadit nějaké rozumné výchozí vlastnosti třeba hned na začátku stylopisu. (Bavíme se o přechodném období kdy většina prohlížečů bude css variables podporovat a je potřeba nějak podporovat tu menšinu, vymizí.)

  • 10. 8. 2008 20:41

    tiso (neregistrovaný)

    [9] - píšeme o tom istom, len ty píšeš, že s tým nie je veľký problém, a ja, že to zruší tie výhody CSS premenných. Zaujímal by ma Tvoj odhad trvania toho prechodného obdobia. Každopádne, pre mňa je ideálne riešenie CSS pre-processing, PHP používam tak či tak.

  • 11. 8. 2008 11:27

    Miloslav Ponkrác (neregistrovaný)

    Ač programátor, já s tím člověkem docela souhlasím. Vše ohledně webu trpí přeplácaností a dávná jednoduchost a použitelnost už je tatam. CSS by skutečně měl zůstat jednoduchý kaskádový stylovací jazyk (a on jednoduchý je, byť jeho aplikace naráží na různé vychytávky).

    Zkusím jiný pohled - máte v HTML/XHTML proměnné? Můžete si v nich napsat?

    proměnná ppp = <!-- Toto je oddělovač kapitoly -->

    a pak použít?

    ...

    ...

    Nemůžete a nikomu nepřijde divné, že v HTML/XHTML proměnné nejsou. Nikdo po nich nevolá a je přirozené, že je to jazyk na popis stránky, ne programovací jazyk.

    Stejně tak CSS je jazyk na popis vzhledu a chování stránky - nikoli programovací jazyk. Pokud chci opakovat věci v CSS, udělám to stejně jako v HTML, nechám to vygenerovat nějaký skript, či programovací jazyk. Ostatně to sá udělat i offline, takže kdo chtěl, mohl to tak dělat třeba před deseti lety. A odpovím, ano mé CSS soubory jsou generované programem.

    Nechte věci jednoduché jak jsou - protože čím složitější se to udělá, tím hůře to bude použitelné v praxi. Stačí dnešní CSS, které ač staré jako dinosaurus stále zdaleka není bezproblémově použitelné a stále člověk musí prasit a hackovat, aby stránka přijatelně chodila v používaných prohlížečích. A jak dlouho, že ho tu máme?

    Podle mého by se mělo postupovat tak, že každá nová vlastnost by měla být velmi tvrdě a kriticky zvážena, raději třicekrát zamítnuta, než aby se do CSS dostala sebemenší zbytečnost. A zatímco řešení proměnných pomocí PHP/Javy/C++ a jiných programovacích jazyků pro CSS existuje, a funguje to na 100%, daleko více by se mělo zaměřit na to, aby CSS bylo 100% použitelné všude.

  • 11. 8. 2008 12:15

    Rudovous (neregistrovaný)

    Sémantický web je bullshit na kterém se živí konferenční turistika a sběratelé grantů. Pokud přidání proměnných do CSS vadí sémantickému webu, pak je to spíš argument pro.

  • 11. 8. 2008 13:56

    Martin Michálek (neregistrovaný)

    Huh, poměrně akademický problém v létě 2008, kdy prohlížeče pořádně nepodporují některé vlastnosti CSS2 :)

    Myslím, že cokoliv šetřící práci vývojářů, je vítáno. Nicméně - ti, kteří po něčem takovém opravdu touží (vývojáří opravdu rozsáhlých webů), už totéž dnes dělají po svém třeba zmíněným serverovým skriptováním a zbývající většině je imho existence proměnných ve skutečnosti ukradená.

    Proměnné jen asi na první pohled vypadají jako nějaká revoluční myšlenka, co udělá z kodérů programátory. Proto asi ta vlna zájmu :)

    Až se podaří současným prohlížečům vyřešit podporu CSS2 (@font-face, generovaný obsah, tiskové styly...), docela se na proměnné začnu těšit.

  • 11. 8. 2008 19:51

    tiso (neregistrovaný)

    [11] "Stačí dnešní CSS,..." - to je problém vývoja prehliadačov a CSS... Časť padá na hlavu W3C pri vytváraní špecifikácie CSS (systém "proti všem"), zbytok je vec jednotlivých prehliadačov (trvanie na spätnej kompatibilite a ich (ne)iplementácii CSS).

  • 11. 8. 2008 19:52

    Miloslav Ponkrác (neregistrovaný)

    Ano, souhlasím s panem Michálkem. To co má CSS mít je opravdu jen akademická debata. Až bude plně podporováno CSS2 naprosto všude jako standard, pak se můžeme bavit dál.

  • 11. 8. 2008 22:38

    Yuhů (neregistrovaný)

    reaguji na [11]
    > máte v HTML/XHTML proměnné?

    v HTML proměnné nemáme, protože čtenáři nepotřebujeme stokrát opakovat, že něco je červené. V CSS to občas opakovat musíme.

    Jsem pro zavedení konstant do CSS. Mám za sebou celkem dost kurzů CSS pro začátečníky a pravidelně oněm začátečníkům většinou hned v první hodině odpovídám na zvědavý dotaz, jestli něco takového náhodou nejde. Ptají se, protože to chtějí.

  • 12. 8. 2008 1:07

    V. H. (neregistrovaný)

    ad [11]: V XML/XHTML máme entity, viz třeba http://www.tizag.com/xmlTutorial/xmlentity.php Můžeme si je definovat a pak použít, i když jsou hodně omezené.

    I omezené proměnné/konstan­ty/makra v CSS, třeba jen na úrovni dosazení řetězce znaků, by se dost hodily. Kolikrát už jsem nadával, proč se nedá jednoduše napsat, že barva1 je X, barva2 Y a pak je používat pod symbolickými názvy, abych nemusel pořád do kolečka opisovat totéž a při jakékoli změně trpět.

  • 12. 8. 2008 8:00

    Marv (neregistrovaný)

    [11] HTML/XML proměnné nemá a nikdo po nich nevolá, protože je možnost použít jednak různé skriptové azyky, které na straně serveru soubor modifikují (např. PHP) a i skriptové jazyky na straně klienta (hlavně JavaScript).
    Stejně by se to mělo řešit i u CSS. Na straně serveru třeba PHP použít jednoduše jde, ale neznám nikoho, kdo by to používal.

  • 12. 8. 2008 13:25

    Miloslav Ponkrác (neregistrovaný)

    Shrnu to:

    Debata o zavedení proměnných/konstant do CSS je asi stejně akademická a platná, asi jako jestli se ožením s Penelope Cruz.

    První by mělo CSS konečně začít fungovat a do té doby je vše ostatní bez významu.

    Zavedení konstant je ošemetné, protože okamžitě někoho napadne třeba "když si můžu zavést konstantu pro šířku divu na 50px, proč nemůžu napsat, že .xy { width:moje_kon­stanta-50; }? A začnou se do toho motat matematické operace, pak výrazy, funkce a vymýšlet zcela zbytečný pseudojazyk. A že to tak dopadne, to je na tuty. Protože půlka konstant nebude mít v CSS sebemenší smysl, pokud se při použití k nim nedá minimálně něco přičíst, nebo odečíst. U barev to sice není potřeba, ale u rozměrů zcela jistě.

    Výsledkem bude něco, co jsme určitě nechtěli. Jsem striktně pro to, že CSS je popisovací jazyk, a pokud chce někdo do toho mít konstanty, proměnné, atd.. ať si CSS postaví třeba nad PHP, Javu, .NET, nebo cokoli jiného.

    Podle mého HTML/XHTML/CSS jsou popisné jazyky, a pokud chcete, generujte si je dynamicky. Tak by to mělo být. Entity v XHTML/XML jsou tak slabá věc, že je vůbec nepočítám do tohoto ranku. A hlavně si vezměte, jak z tak velice principiálně jednoduché věci se udělala obrovská obluda s mnoha normami, s mnoha stránkami normativních textů a obrovský kolotoč kolem toho - a stále třeba XSLT nedosahuje možností zcela jednoduchého LISPu, který se jak koukám snaží nahradit.

  • 12. 8. 2008 13:27

    Miloslav Ponkrác (neregistrovaný)

    Tady mi vypadlo v posledním odstavci - a bez toho to není dost dobře srozumitelné:

    A hlavně si vezměte, jak TŘEBA z tak velice principiálně jednoduché věci JAKO JE XML ...

  • 12. 8. 2008 16:05

    Martin Hassman (neregistrovaný)

    Miloslav Ponkrác:
    "Debata o zavedení proměnných/konstant do CSS je asi stejně akademická"

    Pokud to myslíš tak, že je zbytečné se o tom dohadovat, protože to přes jakýkoliv humbuk stejně projde, pak určitě. BTW Už víte, kam jedete na svatební cestu?

    "začnou se do toho motat matematické operace"

    Začnou? Já myslím, že už tam jsou. Ale nikdo to snad ještě neimplementoval.
    http://www.w3.org/TR/css3-values/

  • 12. 8. 2008 16:25

    Miloslav Ponkrác (neregistrovaný)

    [21] Pane Hassmane, s Penelope Cruz bych jel na svatební cestu kamkoli :-)

    Akademická je proto, že i když to projde, je to stejně jen akademické. Dodnes po mnoha letech nefunguje bezproblémově ani CSS2, a výhledově se zdá, že ještě mnoho let nebude. Takže ať si tam Ti akademici z W3C přidají třeba párky s octem, ono je opravdu buřt. Myslím, že všichni co tu diskutujeme se ani jeden z nás nedožijeme stavu, kdy by to bylo bezproblémové používat a nemuselo se to obcházet - takže debata je opravdu zcela akademická a k ničemu.

  • 12. 8. 2008 16:36

    Martin Hassman (neregistrovaný)

    Miloslav Ponkrác: Tahle úvaha se snaží vnutit představu, že k použití (resp. implementaci v prohlížečích) něčeho z CSS3 je zapotřebí, aby bylo plně dokončeno a uzavřeno CSS2. Ale tak tomu není.

  • 12. 8. 2008 18:40

    logik (neregistrovaný)

    Jsem pro zavedení konstant - a dokonce i aritmetiky s nimi. Ano, na servveru můžu (a používám) na generování skriptů PHP. Jenže to zbytečně zdržuje načítání stránky. A navíc mi to některý problémy nevyřeší. Jak v současnym CSS udělám, že
    okraj má bejt širokej 4em + 2px (v CSS3 to naštěstí půjde)? Už jsem několikrát narazil na to, že bych to potřeboval (např. na okraji je obrázek (velikost s pixelama) a chci od něj odsadit písmo o kus v proporcích dle velikosti znaků).

    Dokonce bych byl pro to (vim, je to už trochu extrém), přidat do css dědičnost. Prostě definovat, že tadle třída přebírá všechna nastavení jiné třídy. Jinak se mi v css množej hromady pravidel pro hromadu tříd, a vždy si musim pamatovat kam všude mam novou třídu dopsat. Příklad: mam seznam prvků, kde různý prvky maj různý třídy a trochu jinej vzhled (např. pozadí a barvu písma). Ten seznam vypisuju na x místech, pokaždý s trochu jinym stylopisem (jenou malý písmo, podruhý ....).
    Teď musim při přidání typu prvku definovat speciální vzhled prvku a navíc ho doplňovat ke stylopisu každýmu stylopisu seznamu. Kdyby byla dědičnost, tak řeknu - novej typ prvku se chová jako stejně prvek, ale je červenym písmem.

    Vim, někdy todle jde obejít použitím kaskády (např. ve výše uvedenym případu bych moh kaskádou definovat vlastnosti pro všechny prvky seznamu najednou), ale ve složitějším případě ne - např. pokud by ta moje "hierarchie tříd" měla víc než jednu úroveň.


    Ad to že má bejt css popisnej jazyk. Narozdíl od HTML už dávno popisnej není, ať se autoři snažej říkat co chtějí, na to je už moc složitej. Většina lidí ho vnímá jako šíleně osekanej programovací jazyk. Koneckonců , umožňuje generovat nový prvky a spoustu dalších věcí, který už prostě popisný nejsou. V současný době je to spíš hybrid.

    Navíc, narozdíl od HTML, kde má jednoduchost smysl pro automatický zpracování textům, vyhledávání atd., u CSS je tadle jednoduchost k ničemu. Další argument:
    co je a není popisnost? Např. výraz 2em + 2px je v podstatě totéž, jako věta na stole ležej dvě jabka a tři švestky. x=blue, stul { Color: var(x) }, zidle { Color: var(x) } je ekvivalent "stůl a židle mají stejnou barvu, a to modrou".
    To jsou IMHO naprosto popisné věty.

    A argumenty, že to jde dělat v externím jazyku? A proč pak vůbec existují překladače? Vždyť člověk může napsat program v assembleru. A nevyhovuje ti? Napiš si vlastní řešení, jak generovat asm kód, je potřeba, aby asm kód zůstal jednoduchej....

    Pokud prostě po nějaké vlastnosti volá většina webových vývojářů, tak asi bude užitečná. Lidem, pro něž byla "čistota návrhu" modlou, už se podařilo zabít XHTML 1.1 (užitěčnější návrh by se určitě už dávno používal...), a doteď IMHO vcelku brzdily rozvoj CSS správnym směrem (tzn. směrem, kdy bude ulehčovat vývojářům práci - důkazem toho je malá podpora CSS3 v prohlížečích, prohlížeče zpravidla nejdříve podporují pro vývojáře užitečné prvky).

    A že je to buřt, že se to nebude stejně implementovat? Uvidíte, že do dvou let hlavní browsery to implementujou. Jak jsem již zmínil, užitečný věci implementujou vývojáři prohlížešů relativně rychle (např. dom model, XMLHttpRequest apod.). Navíc je to vlastnost na implementaci naprosto jednoduchá. IMHO bude implementovaná daleko dřív než CSS3.

  • 12. 8. 2008 22:37

    O Simaban Lidan (neregistrovaný)

    Ad Barcode...ono bez UTF8 by to byvalo bylo citelnejsi. A kdybych kvuli tomu nemusel istalovat reader...ktery, jak se zda, pro PC existuje snad jen jeden jediny.
    Jinak to ale klidne udelej...i kdyz, uz jsem od ni videl i lepsi obrazky ;-)

  • 12. 8. 2008 23:33

    samuel (neregistrovaný)

    logik napsal:
    "A argumenty, že to jde dělat v externím jazyku? A proč pak vůbec existují překladače? Vždyť člověk může napsat program v assembleru. A nevyhovuje ti? Napiš si vlastní řešení, jak generovat asm kód, je potřeba, aby asm kód zůstal jednoduchej...."

    Presne preto existuju prekladace, lebo je potrebne aby asm kod zostal jednoduchy. A nie je nutne pisat si vlastne riesenie, ako generovat asm kod, lebo to uz niekto spravil (napisal prekladac). Rovnako je to s tym CSS, ked ho generujeme skriptom, je to obdoba kompilacie programu v cecku.
    Hmm, ale mozno by bolo zaujimave, keby CSS bolo len velmi jednoduchym popisnym jazykom, ktore by neobsahovalo nic navyse a vznikol by nejaky jazyk nad CSS, ktory by sa kompilatorom kompiloval do CSSka. To by mohlo vyriesit nejake problemy:-) CSS by sa zjednodusilo, existovalo by viacero jazykov na jeho generovanie (kazdemu podla vlastnej chuti)...

  • 13. 8. 2008 2:04

    Miloslav Ponkrác (neregistrovaný)

    [23] K použití CSS3 samozřejmě není nutné uzavřít CSS2. Ale zajisté uznáte, že jestli praktická situace (kterou už dávno W3C nemá pod palcem, neboť W3C stabilně odvádí tak špatnou práci, a výsledkem je, že ten bordel zkrátka v praxi nefunguje). Takže jestliže praktická situace potvrzuje, že soulad norem s praxí se jaksi nekoná, a co pamatuji, tak W3C nikdy za mnoho let co existuje nedosáhla souladu jejich teorií s tím co funguje v browserech - pak těžko předpokládat, že přiletí kouzelný dědeček, a najednou u CSS3 bude situace jiná.

    Pane Hassmane, Váš způsob myšlení nechápu. Heuristicky mohu odvodit, že pokud 23C nikdy neprosadilo za celou svojí historii z web standardů HTML/XHTML/CSS do browserů tak, aby browsery fungovaly na 100% podle standardu, pak nachápu optimismus, že u CSS3 to bude jinak. Jinými slovy, soused mi nechce půjčit 1000 Kč, protože se bojí, že mu je nevrátím, tak podle Vás půjdu za ním, třeba mi půjčí ne 1000 Kč, ale 30000 Kč - abych tak prafrázoval Váš příspěvek.

    Je úplně jedno, co bude v CSS3, protože to nebude v praxi použitelné na 100%, a tak všichni rádi budeme používat tak 10% všeho. A pokud budou výrazy, tak to bude v CSS3 to samé - tam nebude fungovat to a tam tohle. A nakonec bude jistější bude to CSS vygenerovat.

    Jinak jsem moc rád, že logik nenavrhuje žádné vážné normy. Sice nevím co pracovně dělá, ale podle jeho příspěvku vím, že nikdy nic s promyšlenější architekturou v sw nevymyslel. Není to urážka, ale je to jasně patrné z textu.

  • 13. 8. 2008 7:32

    Martin Hassman (neregistrovaný)

    samuel: Myslím, že něco podobného právě Bert Bos naznačuje.

  • 13. 8. 2008 7:36

    Martin Hassman (neregistrovaný)

    Miloslav Ponkrác: "nechápu optimismus, že u CSS3 to bude jinak."

    Svět bude mnohem hezčí, když mi nebudete podsouvat něco, co jsem neřekl. Děkuji 8-)

  • 13. 8. 2008 7:50

    Martin Hassman (neregistrovaný)

    O Simaban Lidan: Mě to funguje i s diakritikou, ale uvidíme, možná ji příště odstraním.

  • 13. 8. 2008 20:42

    logik (neregistrovaný)

    26: Todle by mělo smysl, pokud by mělo význam udržovat css jako jednoduchej popisnej jazyk. Pak jsem pro, aby se nad tím udělal standardizovanej metajazyk, kterej se do jednoduchýho css bude překládat. Já ten význam ale nevidim.

    Architektura drtivé většiny webů je natolik složitá, že prostě v ASM psát nelze. Pro začátečníky to taky neni (copak se v programování začíná s výukou v ASM?). Prostě nevidím důvod, proč udržovat uměle CSS "jednoduchej". Mám prostě dojem, že původci CSS se ten jazyk vymknul a začal se používat jinak, a ten navrhovatel to není ochotnej skousnout.

    Jak je vidět, tak nový virtuální stroje (JVM, C#...) poskytujou standardizovaný vysokoúrovňový jazyky. Tak proč by CSS mělo zůstat low?

    27: A kupodivu se navrhování SW živím (a poměrně zatím úspěšně). Jestli to je promyšlené nebo ne nechám hodnotit jiné, rozhodně ale ne člověka, který si udělá názor z jednoho postu do diskuse. A už vůbec ne od člověka, kterej pro to hodnocení neuvede jedinej relevantní argument a navíc evidentně není schopný (viz 29) porozumět tomu, co ostatní tvrdí.
    Nidko tady neříká, že CSS3 bude rychle přijato. Já (a IMHO i Matin. H) tvrdíme, že proměnné v CSS budou v browserech implementovány vcelku rychle. Koneckonců webkit už je má.
    Naopak právě to, že není implementováno ani CSS2 je argument pro proměnné. Protože dosud CSS navrhovali teoretici, a snažili se o 100% ideovou čistotu - výsledek byl, že je nikdo nebere vážně. Teď se do těch komisí konečně dostávají lidé z praxe.

    PS: Nemám nic proti ideové čistotě - naopak při návrhu softu se o ni 100% snažím. Zkušenost mě ale naučila, že to nemůže být modla. Pokud začnu se svojí původní ideou narážet, tak je více cest: první z nich je začít ji porušovat - to je cesta do pekla a zmatku. Druhá z nich je striktní dodržování - to sice nevede do zmatku, ale výsledek je často omezenej či nevyhovující. Pak je ovšem cesta třetí: nelpět na původní idei, ale zjistit proč to skřípe a vymyslet ideu novou a lepší (tak aby se do ní dalo zahrnout všechno dobré z té původní). A toho se obávám dost navrhovatelů stadardů (ať css3, xhtml 2.0...) nebyly schopni a výsledek byl dost dlouhá stagnace internetových technologií...

  • 13. 8. 2008 21:00

    Martin Hassman (neregistrovaný)

    Děkuji všem za diskusi. Myslím, že jsme k tématu probrali, co se dalo. Pokračování zas někdy příště.

Přidávat nové názory je zakázáno.