Přejít k navigační liště

Zdroják » Webdesign » Soap opera CSS prefixů aneb -webkit-property vládne všem

Soap opera CSS prefixů aneb -webkit-property vládne všem

Články Webdesign

Opera začíná podporovat prefix -webkit. Další prohlížeče uvažují o tomtéž. Proč se to děje? A co si o tom má webdesigner nakonec myslet?

Už od letošního února se nad kaskádovými styly vznáší nové strašidlo v podobě prefixů. Problém je celkem vážný. Tantek Celik situaci přirovnal k zavedení quirk módů do prohlížečů. Dostal se web do slepé uličky? Výrobci prohlížečů nepostavených na WebKitu se rozhodují implementovat -webkit prefix. Tvrdí, že je to pro ně nutné a otázka už nezní “Zda ho implementovat?”, ale “Jakým způsobem ho implementovat?”

K problému se již vyjádřil téměř každý, kdo v oblasti webových standardů něco znamená, a předseda pracovní skupiny pro CSS u W3C vyslal veřejnou výzvu k akci. Zkusme ten problém trochu pochopit a začněme u kořenů.

Web se vyvíjí evolucí a není verzovaný

Opravdu, web není verzovaný. Při pohledu na všechny ty standardy CSS 1, CSS 2, CSS 3, HTML 3.2, HTML 4.01, HTML 5 aj. bychom mohli mít pocit, že je tomu naopak, že web má své verze. Jenže on nemá. Tohle jsou verze specifikací, verze standardů, ale reálný web  je někde jinde.

Zkuste najít prohlížeč, který HTML 3.2 dokument bude zpracovávat jako HTML 3.2, HTML 4.01 jako HTML 4.01, HTML 5 dokument jako HTML 5 atp. Neexistuje pravděpodobně jediný webový prohlížeč, který by se takhle choval. Prohlížeče sice zpracovávají starší a novější HTML trochu jiným způsobem (jedná se o tzv. renderovací módy prohlížečů), ty se ale vůbec nepřekrývají s verzemi webových standardů. Původně tu snaha o verzování webu byla (HTML dokumenty obsahovaly v doctype číslo verze), ale selhala jak na úrovni webdesignerů, tak na úrovni prohlížečů.

Důsledkem je, že  prakticky každý webdesigner se prodírá jak technologiemi již plně standardizovanými, tak těmi částečně standardizovanými nebo vůbec nestandardizovanými (a kolikrát ani nemá přesné ponětí, která technologie kam patří).

A kde je problém?

Problém nastane, pokud se nějaká dosud nestandardizovaná vlastnost začne v široké míře používat a následně během standardizace dozraje do podoby, která je s tou již používanou nekompatibilní. A to se stát nejenže může, ale i stalo – vzpomeňte na doby, kdy taková vlastnost width mohla v různých prohlížečích znamenat něco jiného.Neexistovala možnost strkat ty nové dosud nestandardizované (a tudíž potenciálně problematické) vlastnosti bokem do nějaké škatulky (beta verze), kde by mohly “dozrát”. Tak se nakonec v kaskádových zavedly vendor prefixy.

Prefixy jako řešení

Dokud není daná vlastnost kaskádových stylů standardizovaná, implementují ji prohlížeče s tzv. vendor prefixem (-moz-,  -webkit-, -ms-, -o-). Až po standardizaci prohlížeče implementují vlastnost i bez prefixu. Pokud se mezitím “nějak změnila”, není to problém – prohlížeč bude minimálně pár let podporovat prefixovanou variantu s původním chováním (takže se již existující weby nerozpadnou), a webdesigneři se časem naučí používat variantu bez prefixu s novým chováním.

Tenhle systém fungoval docela dobře. Až do teď.

Kde je problém teď?

Novinkám kaskádových stylů začal dominovat Webkit, tudíž se v kaskádových stylech objevila řada vlastností s prefixem -webkit. Na tom není nic špatného, jenže někdy platí, že čeho je moc, toho je příliš. Ostatní prohlížeče dané vlastnosti již implementují také, jenže na webech (a jedná se o velké množství webů) jsou zapsány jen s prefixem -webkit (tudíž jiné prohlížeče mají utrum). V tomhle případě se prefixy tak trochu nevyplatily.

Co s tím? Dovolí si prohlížeče čekat, než se všechny ty weby změní? Nedovolí. Navíc stávající nástroje i učebnice jsou plné návodů s prefixem -webkit, takže by přeučení webdesignerů mohlo trvat třeba až pár let. A jsme u toho, proč chtějí ostatní prohlížeče také používat prefix -webkit. Opera již od slov přešla k činům.

A vadí to?

Doteď bylo snadné u nových vlastností jednotlivé prohlížeče odlišit, stačilo zapsat prefix -webkit a bylo jasno. Co když ale bude implementace nějaké -webkit-property mezi prohlížeči jiná? A to se snadno může stát, když se ona vlastnost teprve standardizuje. Když bude zápis -webkit-property v jednom prohlížeči dělat to, v druhém ono, jak mezi nimi dál rozlišíme? Co když budeme muset začít znovuvynalézat podtržítkové a jiné hacky?

Budoucnost

Tomu všemu by bylo dobré předejít. Výrobci prohlížečů to vědí. Implementovat -webit prefix se již rozhodli. To nezměníme. Teď řeší, jak to udělat a zas tak nic moc nepokazit ani pro teď ani do budoucna. A jde to vůbec? Že to není snadné, se můžete přesvědčit kupříkladu pročtením vlákna Proposition to change the prefixing policymailing listu CSS WG.

Další čtení

Komentáře

Subscribe
Upozornit na
guest
12 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
mpscz

a má mít implementován prefix -webkit, měl by výrobce takového prohlížeče napřed buďto implementovat jádro Webkit namísto vlastního nebo alespoň zaručit 100% kompatibilitu se všemi funkcemi Webkitu.

tiso

…ale ani to nezaručí komptatibilitu v čase…

mpscz

Kompatibilitu v čase v této džungli nezaručuje vůbec nic. Standardy ani ty psané se vesele nedodržují, někdo něco implementuje, jiný na to kašle, třetí to implementuje částečně, čtvtrý to pozmění k obrazu svému…

alfi_

a to jako, že někde jinde je ta džungle lepší? HTTP, SIP, IPv6.. specifikace jsou všude stejné, ale každý si z nich implementuje, co a jak chce. a když si stěžujete, pak vám i renomovaný výrobce komerčního sw řekne, že oni tu (možná ne úplně do detailu přesnou) specifikaci chápou jinak a že nic opravovat nebudou.

jlx

To je nesmysl, stačí když výrobce implementuje prefix -webkit pro určitou podmnožinu CSS vlastností a to tak, že výstup bude stejný jako u Webkitu (což např. u Firefoxu, či Opery v mnoha případech platí).

Václav Dajbych

Ten prefix vlastně říká: „Pozor pozor, používám tuhle CSS vlastnost v době, kdy je teprve experimentálně implementovaná konkrétním výrobcem prohlížeče.“ Takže pokud prohlížeč uzná, že je konkurenční implementace dostatečně kompatibilní, použije vlastní implementaci. Nic hrozného se vlastně neděje. Po čase si webdesignéři uvědomí, že prefixy jsou nějaké divné a přestanou je používat. Doufám.

0xf

podle me je to jednoduche.. pokud delam all browser code tak pouzivam pouze standart jsem omezen ale +/- vim ze to vsude pojede. I kdyz je toto odvazne tvrzeni. Pokud delam treba v intranetu pro homogeni prostredi tak si tyhle spasy mohu klidne dovolit.

alancox

Pokud W3C hodlá vyvíjet asi 10 let či víc.

Pokud jenom vývoj jedné verze CSS zabere W3C také kolem 10 let.

Pak je naprosto jasné, že vývoj bude živelný a časem obejde W3C zcela.

Ale největší vina je to autorů příruček, kteří masově doporučují používání experimentálních vlastností webkitu jako standardní postup.

Já bych jako firma programující browser už dávno implementoval nejenom prefix webkit. Chránil bych podíl browseru, ne vytahoval W3C a blbě programujícím kodérům osiny ze zadků z jejich neschopnosti.

sachy

Ještě všichni začněte podporovat podtržítkový hack, ten se přece taky masivně používá a je v každé učebnici!

Chamurappi

Tématu prefixů jsem se obšírněji věnoval před dvěma týdny na Webylonu. Prosil jsem Zdroják o zprávičku, marně. Možná jsem to měl napsat anglicky, třeba bych pak měl šanci aspoň na odkaz z tématicky souvisejícího článku :-)

Jan33

Věta „Opera již od slov přešla k činům.“ dnes dostává, když přichází Opera Ice s novým jádrem, úplně jiný rozměr ;-)

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.