CSS v IE8 získávají vendor prefix

17. 8. 2010 14:30 (aktualizováno) | Martin Hassman
Logo Internet Exploreru 8 beta

Na IEblogu byl včera představen vendor prefix Internet Exploreru. Je obsažen v přicházející verzi IE8,  začíná na „-ms-“, např. „-ms-filter“. A já volám: „Konečně je to tady!“

Vendor prefixy již dávno mají jak Mozilla (-moz-), Opera (-o-), WebKit (-webkit-) nebo některé mobilní prohlížeče (-wap-) a lze je dnes již považovat za nutnost. Je to jakýsi jmenný prostor kaskádových stylů, ve kterém si výrobce prohlížeče může téměř dělat co chce. Typicky vkládat svá vlastní rozšíření (pokud jsou s vendor prefixem, proč ne, třeba se časem ujmou i u sousedů) nebo uvolňovat nehotové či dosud nevyřešené implementace (viz CSS proměnné ve WebKitu).

Vendor prefix zajišťuje, že CSS vlastnosti výrobce nebudou v konfliktu se standardizovanými CSS vlastnostmi a předejte tak případným problémům do budoucna. Specifikace CSS2 vendor prefixy sice nezná, ovšem její revize CSS2.1 již ano (CSS2.1 dosud není Final Recommendation, nicméně je již dnes všeobecně chápána jako náhrada původní specifikace CSS2). Validátor by měl vlastnosti s vendor prefixy správně přeskakovat (nezná je a nedokáže je zvalidovat), ovšem zatím je hlásí jako chybu. Nezkoumal jsem proč.

Vendor prefixy v IE dostaly dnes již hojně známé IE-only vlastnosti jakými jsou scrollbar-base-color, filter, behaviour a dále některé CSS3 vlastnosti, které IE8 podporuje (CSS3 se stále mění a je dobře předejít opakování historického faux pas s boxmodelem), např. text-justify, text-align-last apod.

Nezapomeňme na zobrazovací módy IE8 (má tři!).  Nový standardní mód IE8 rozumí, jak -ms- vlastnostem, tak jejich původním podobám (zpětná kompatibilita, nebudete muset své weby předělávat), oba dva starší módy prohlížeče rozumí jen původní syntaxi a vendor prefix neznají (chovají se stejně jako předchozí verze IE).

U vlastnost filter musel být navíc pozměněn formát hodnoty (část za dvojtečkou), aby byl kompatibilní s CSS2.1. Proto místo původní syntaxe:

filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80,
FinishOpacity=70, Style=2);

ve standardním módu IE8 použijte (má navíc uvozovky):

-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80,
FinishOpacity=70, Style=2)";

Plný přehled -ms- vlastností najdete na Microsoft CSS Vendor Extensions.

Pokračování:

  • 9. 9. 2008 16:37

    d$#@ (neregistrovaný)

    Zatimco ty tady naivne oslavujes, tak ja si ihned uvedomil, ze tyto prefixy M$ ponecha i pote, co budou vsechny browsery zvladat nativne CSS3, coz bude dalsi obrovska nekompatibilita, kterou marketing M$ bude nazyvat "zpetna kompatibilita s IE8" a tim vazne porusovat standard, ve kterem zadne prefixy nejsou.

    Pro veschny browsery bude fungovat napr. word-wrap, ale pouze M$IE nebude reagovat na nic jineho, nez ms-wordwrap !

    Fuck M$ !

  • 9. 9. 2008 16:50

    Martin Hassman (neregistrovaný)

    [1] "tyto prefixy M$ ponecha i pote"

    Prefixové vlastnosti můžou zůstat natrvalo a nejspíš i zůstanou, viz případ Gecka, které je má také pořád a není důvod je rušit. S tím počítá, než že by to byl nějaký rafinovaný trik.

    "porusovat standard, ve kterem zadne prefixy nejsou"

    Jsou, viz CSS 2.1, odkazovaný odstavec 4.1.2.1

    "Pro veschny browsery bude fungovat napr. word-wrap, ale pouze M$IE nebude reagovat na nic jineho, nez ms-wordwrap"

    I když by to tak dopadlo, jakože dnes opravdu není důvod, aby to tak dopadlo, následky by byly řádově menší než v opačném případě, kdy stejně zapsaná vlastnost (např. width) znamenala v různých prohlížečích něco jiného.

    Opravdu nevidím racionální důvod, proč tenhle krok, na který se nejen čekalo, ale po kterém W3C a webdesigneři sami volali, chápat špatně.

  • 9. 9. 2008 18:07

    wdolek (neregistrovaný)

    a ja mel za to, ze OPRAVDOVY designer umi udelat CSS bez pouziti hacku i techto nesmyslu. to bylo asi naivni si to myslet, ze??? tento krok povazuji za berlicku pro trolly, kteri pisi stranky ve FrontPage - nic pro me... navic - misto tvoreni standardu pro vsechny najednou, bude mit kazdy prohlizec vlastni cssko? hurray, navrat do minuleho stoleti, kdy kazdy web obsahoval nejaky ten IF-IF-IF a podle toho se poslalo "spravne" CSSko... opravdu hnus... muj nazor... (do webu delam 10 let)

  • 9. 9. 2008 21:08

    Martin Hassman (neregistrovaný)

    [3] Wdolku (to oslovení se mi líbí, musel jsem ho použít 8-), jaké "hacky" máš na mysli? Tento článek ani vendor prefixy totiž o žádných nejsou.

    Vzpomeň si, kolik let trápení způsobil webdesignerům dvojí boxmodel a nediv se, že jak prohlížeče, tak W3C chtějí předejít opakování stejné situace. Jiná cesta, než používání vendor prefixů neexistuje. Jinak se bude historie opakovat.

  • 9. 9. 2008 21:28

    Saboter (neregistrovaný)

    [4] Tedy s CSS si zrovna netykám, ale věta: jiná cesta než používání vendor prefixů neexistuje mi nějak nahání husí kůži. Jestli to dobře chápu, tak chcete říct, že neexistuje cesta jak udělat něco standardem pro všechny prohlížeče a že jediná cesta je udělat to pro každý zvlášť?
    To si asi začnu psát vlastní prohlížeč s vlastními prefixy.
    (ale možná to celé nechápu)

  • 9. 9. 2008 21:42

    Martin Hassman (neregistrovaný)

    [5] Nechápeš a vnímáš mimo kontext. Ono tvrzení z [4] převyprávěno znamená "Pokud si nechceme zopakovat minulost s více boxmodely, potřebujeme vendor prefixy."

    Proč je k tomu potřebujeme, vědí ti, kdo pamatují, jak problém s boxmodely vznikl. Jednalo se o implementaci nedokončené specifikace, která se pak změnila. Stejné implementace se dějí dnes a denně a problému lze předejít, pokud se implementovaným vlastnostem, jejichž specifikaci nelze považovat za stabilní, přiřadí vendor prefix, který se odstraní až když je specifikace stabilizovaná.

    Prohlížeče k tomu přistupují různě, IE si nyní pro tu mez stability označil stav Candidate Recommendation specifikace (cokoliv dosud nedosáhlo tento stav, to IE implementuje výhradně s vendor prefixem). Což pro něj docela rozumné. Další prohlížeče jsou odvážnější, ale protože mají kratší vývojové cykly, mohou si to snad dovolit.

  • 9. 9. 2008 23:36

    Saboter (neregistrovaný)

    [6] Díky za objasnění. Už mi asi začíná svítat :)

  • 10. 9. 2008 8:00

    xurwha (neregistrovaný)

    Taky souhlasím, specifikace nidky nebudou vznikat „u psacího stolu“, tj. „z voleje“, tedy bez toho, aniž by předem existovala nějaká implementace...

  • 10. 9. 2008 9:17

    d$#@ (neregistrovaný)

    [2] GECKO ma vendor prefixy pouze pro zadnym standardem nespecifikovane veci, coz je naprosto normalni, zatimco M$IE ma vendor prefixy pred kazdym atributem CSS3, cimz standard CSS3 velice zavazne porusuje jeste drive, nez jej v W3C vubec stacili vydat. Kde jsou v CSS3 specifikaci podle vas prefixy typu "ms-" pred atributy jako je word-wrap ?

    Ja jsem si jist, ze to tak dopadne a nasledky budou obrovske, navic stejne v M$ CSS3 bude vetsina atributu znamenat neco jineho, nebo delat neco jineho, nez standard urcuje, jelikoz se jedna o M$ CSS3, kde standardem jsou interni doporuceni Micro$oftu.

    "Opravdu nevidím racionální důvod, proč tenhle krok, na který se nejen čekalo, ale po kterém W3C a webdesigneři sami volali, chápat špatně."
    nikdo po implementaci CSS3 s ms- prefixem nevolal, kazdy developer vcetne me by uvital atributy jako je napr. ms-margin-top, kterym bych pridaval dalsi margin pro M$IE, aby renderoval box na spravnem miste, nebo ms-hide-horizontal-scrollbar, pripadne ms-hide-vertical-scrollbar a dalsi veci pro opravu M$IE-specific bugu, kterymi zadny jiny browser nikdy netrpel a trpet nebude.

  • 10. 9. 2008 13:26

    bohyn (neregistrovaný)

    [8] ...a vratime se tak zpatky do casu apod., kdy si kazdy prohlizec bude implementovat svoje znacky/vlastnosti. ;)

  • 10. 9. 2008 15:41

    Martin Hassman (neregistrovaný)

    [9] Docházíte ke špatný závěrům, protože vycházíte z nepravdivých předpokladů.

    "GECKO ma vendor prefixy pouze pro zadnym standardem nespecifikovane veci"

    Není pravda, i Mozilla je má a z dobrého důvodu, nemá se za co stydět, viz zdroják http://mxr.mozilla.org/mozilla/source/layout/style/nsCSSPropList.h nebo MDC http://developer.mozilla.org/en/CSS_Reference/Mozilla_Extensions

    namátkou některé column-* a background-* vlastnosti jsou součástí CSS3 a mají -moz prefix (ze stejného důvodu jako v případě -ms- , jejich specifikace prostě není stabilní) a najdeme i pozůstatky z minulosti (např. -moz-left).

    "zatimco M$IE ma vendor prefixy pred kazdym atributem CSS3"

    Správně řečeno před každou vlastností CSS3, která je ve specifikaci, jenž dosud nedosáhla stavu Recommendation, tudíž může být během noci prakticky přepsána.

    To, že vývojáři takové vlastnosti nevydají do prohlížeče, který bude možná vévodit desktopům několik let, je to od nich rozhodnutí moudré a s ohledem na webové standardy skutečně prozíravé. Jinak by mohli nevědomky zapříčinit přesně to, pře čím varujete - stejné vlastnosti by v odlišných prohlížečích znamenali něco jiného. Tady má vendor prefixy ochrannou funkci. Odsuzovat galantní krok "nepřítele" je hloupé. Za tohle si vývojáři IE zaslouží potlesk. Za některé jiné věci pro změnu ne, ale zrovna zde webovým standardům vyšli vstříc.

    "cimz standard CSS3 velice zavazne porusuje"

    Není pravda. Vendor prefix není v rozporu s CSS3 (zároveň to ale není ani splnění CSS3 - a v tom je ten trik).

    Není mým cílem obhajovat IE, ale vyvrátit nepravdivá tvrzení, plynoucí nejspíše ze zapomenutých zkreslujících anti-IE brýlí na nose. Sundejte si je, máme tu rok 2008!

  • 10. 9. 2008 15:43

    Martin Hassman (neregistrovaný)

    [11] Oni vlastně nikdy nepřestali. A ani nepřestanou, jen je třeba zajistit, aby se to dělo kultivovaně a neohrozilo to webové standardy. Jinak ať si dělají, co chtějí, nikdo jim to ani zakázat nemůže.

  • 10. 9. 2008 16:41

    d$#@ (neregistrovaný)

    Martine, dekuji za opraveni.

    "Není mým cílem obhajovat IE, ale vyvrátit nepravdivá tvrzení, plynoucí nejspíše ze zapomenutých zkreslujících anti-IE brýlí na nose. Sundejte si je, máme tu rok 2008!"

    Ale M$IE je still the same shit i v roce 2008 !

  • 10. 9. 2008 18:16

    Martin Hassman (neregistrovaný)

    Zkusil jsem to rozepsat podrobněji. Je vidět, že vendor prefixům víc lidí nerozumí http://met.blog.root.cz/2008/09/10/k-cemu-jsou-v-css-potreba-vendor-prefixy/

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

DigiZone.cz: Kauza technik: oficiální vyjádření Novy

Kauza technik: oficiální vyjádření Novy

120na80.cz: Bonbon si schovejte na přistání

Bonbon si schovejte na přistání

Měšec.cz: Banky umí platby na kartu, jen to neříkají

Banky umí platby na kartu, jen to neříkají

Vitalia.cz: Tohle je Břicháč Tom, co zhubnul 27 kg

Tohle je Břicháč Tom, co zhubnul 27 kg

Podnikatel.cz: Daňové složenky? U daně z příjmů se nechytly

Daňové složenky? U daně z příjmů se nechytly

Podnikatel.cz: Přerušil SVČ, nic nehlásil. Dál musí platit

Přerušil SVČ, nic nehlásil. Dál musí platit

Podnikatel.cz: Místa, kde hází podnikání klacky pod nohy

Místa, kde hází podnikání klacky pod nohy

Podnikatel.cz: Fotogalerie: Jesenka už má skoro 50 let

Fotogalerie: Jesenka už má skoro 50 let

Měšec.cz: Test: Výběry z bankomatů v cizině a kurzy

Test: Výběry z bankomatů v cizině a kurzy

Měšec.cz: Zelená karta – kde neplatí povinné ručení?

Zelená karta – kde neplatí povinné ručení?

Vitalia.cz: Ahold a Billa prodávaly falšované sýry

Ahold a Billa prodávaly falšované sýry

DigiZone.cz: Reklamy na kurzové sázky? Nejspíš chaos

Reklamy na kurzové sázky? Nejspíš chaos

Podnikatel.cz: Nereaguje na výzvu ČOIky, zaplatí milion

Nereaguje na výzvu ČOIky, zaplatí milion

Lupa.cz: eIDAS: Nepřehnali jsme to s výjimkami?

eIDAS: Nepřehnali jsme to s výjimkami?

Vitalia.cz: Sobotní masakr žrádla, chlastu a zábavy

Sobotní masakr žrádla, chlastu a zábavy

Podnikatel.cz: Český zákazník nakupuje v čínských e-shopech

Český zákazník nakupuje v čínských e-shopech

Lupa.cz: Vodafone umí volání přes Wi-Fi. Z ciziny jako v ČR

Vodafone umí volání přes Wi-Fi. Z ciziny jako v ČR

Podnikatel.cz: Daň z nemovitosti? Změny budou v říjnu

Daň z nemovitosti? Změny budou v říjnu

Lupa.cz: Japonská invaze. Proč SoftBank kupuje ARM?

Japonská invaze. Proč SoftBank kupuje ARM?

Vitalia.cz: Petr Koukal: Až rakovina mi zkvalitnila život

Petr Koukal: Až rakovina mi zkvalitnila život