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

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í

Vystudoval jsem biochemii. Vymyslel a založil Zdroják. Aktuálně ho vedu. Nejsem váš hodný tatínek. Nebudu vás brát za ručičku. Dělám tu zlého moderátora. Smiřte se s tím!

Zdroj: https://www.zdrojak.cz/?p=3661