XHTML a CSS v moderních prohlížečích IX

02.10.2009 - PaedDr. Petr Pexa Počet zobrazení: 1308
V tomto dílu našeho seriálu se budeme věnovat problematice podpory tzv. filtrů a nových vlastností opacity a text-shadow, deklarovaných v jazyce CSS2.
Pomocí vhodné kombinace těchto technik lze dosáhnout na webové stránce poměrně zajímavých efektů stínu a průhlednosti libovolných grafických či textových objektů. Jak už jste si v našem seriálu zvykli, zaměřujeme se především na testování problematických prvků a v úvodu tohoto článku si tedy nejprve vysvětlíme, s jakými problémy se můžeme při použití filtrů a vlastností opacity a text-shadow setkat.
Filtry jsou technika, vytvořená firmou Microsoft a proto zatím bohužel funkční pouze v prohlížeči Explorer. Pomocí několika příkazů, uváděných jako parametr příkazu filter lze dosáhnout především u obrázků efektů, které je jinak nutné řešit grafickými editory, jako jsou např. částečná a úplná průhlednost, rozmazání, stín, horizontální a vertikální převrácení a několik dalších efektů. Syntaxe zápisu např. pro filtr průhlednosti (tzv. alfa kanál) je
< img src="http://www.voxcafe.cz/data/imgs/1405b.gif" alt="Grafika s průhledností pro Explorer" style="filter:alpha(opacity=40, style=0)" / >
Další ukázky všech existujících filtrů najdete např. na http://www.jakpsatweb.cz/css/css-filtry-priklady.html.
Efekt průhlednosti
My se dále zaměříme pouze na efekt průhlednosti, protože ten je jako jediný možné řešit i v ostatních prohlížečích (Firefox, Opera, Safari, Google Chrome) novou vlastností opacity, která ale zase paradoxně nefunguje v Exploreru. Vhodnou kombinací obou zmíněných technik lze ale dosáhnout efektu průhlednosti ve všech prohlížečích naprosto shodného.
Syntaxe zápisu této vlastnosti je
< img src="http://www.voxcafe.cz/data/imgs/1405b.gif" alt="Grafika s průhledností pro Firefox, Operu, Safari a Chrome" style="opacity: 0.4" / >
Spojíme-li tedy obě techniky dohromady, je efekt průhlednosti ve všech testovaných prohlížečích zobrazen shodně.
< img style="filter:alpha(opacity=40, style=0); opacity:0.4" src="grafika.gif" alt="Grafika s průhledností pro všechny prohlížeče" / >
Obdobného efektu můžeme takto dosáhnout i pro textové prvky na webové stránce (např. nadpisy). V prohlížeči Explorer ale v tomto případě nefunguje nastavení filtru přímo pro nadpis (tedy např. element < h2 >), snadným řešením je vložit text do jiného blokového prvku (buňky tabulky nebo) a nastavit styl průhlednosti pro tento blokový prvek.
< div style="width:400px; height:50px; filter:alpha(opacity=40,style=0); opacity: 0.4" > < h2 >průhlednost u textu pro všechny prohlížeče< /h2 > < /div >
Popsanými vlastnostmi můžeme také vytvořit zajímavý efekt např. u grafického menu pomocí pseudotřídy :hover, pokud je grafika současně hyperlinkem. Tento efekt se dříve musel řešit mnohem složitějším kódem pomocí dvou různých obrázků a jejich dynamickou záměnou pomocí DOM událostí onmouseover a onmouseout. Efekt funguje všude shodně, ale pouze v následující syntaxi s nastavením pseudotřídy :hover pro obrázek v hyperlinku.
< style type="text/css" >
a:hover img {filter:alpha(opacity=40, style=0); opacity:0.4}
< /style >
< a href="#" >
< img src="grafika.gif" alt="Grafika s hover efektem" / >
< /a >
Efekt stínu
Na závěr tohoto článku se ještě v krátkosti zmíníme o efektu stínu, vytvořeného další novou vlastností jazyka CSS2 text-shadow, která v běžných prohlížečích dlouhá léta většinou nefungovala, podporoval jí pouze applovský prohlížeč Safari. Jak jsme ale v nedávné době zjistili, poslední verze Opery 9.5x, Firefoxu 3.5 a prohlížeč Google Chrome již tento efekt podporují také!
< h2 style="text-shadow:#007fff 5px 5px 5px" >stín textu< /h2 >
V Exploreru, kde vlastnost text-shadow nefunguje, lze stín řešit filtrem shadow.
< table >
< td style="filter: shadow(color=#880000, direction=145)" >
< h2 >stín textu pro Explorer< /h2 >
< /td >
< /table >
Tento filtr ale funguje ideálně pouze tak, jak je naznačeno v ukázce zdrojového kódu, tedy text musí být umístěn v buňce tabulky. Pro text v elementu jako u efektu průhlednosti funguje stín až ve verzi Explorer 8. Přímé nastavení filtru např. pro již sice v poslední verzi Exploreru funguje také, ale stín je ve spodní části poškozen oříznutím. Toto lze vyřešit nastavením vhodné výšky, přesto zobrazení stínu není úplně shodné jak u ostatních prohlížečů (kde je nutné stín řešit CSS vlastností text-shadow).
< div style="filter: shadow(color=#880000, direction=145)" >
< h2 >stín textu pro Explorer< /h2 >
< /div >
< h2 style="filter: shadow(color=#880000, direction=145)">stín textu pro Explorer< /h2 >
< h2 style="filter: shadow(color=#880000, direction=145) ; height:50px" >stín textu pro Explorer< /h2 >
Aktuality
-
22.04.
2010Jsme dodavatelé CMS pro ZVVZ a.s.
Ve výběrovém řízení jsme stali hlavními dodavateli řešení internetové prezentace -
24.11.
2009Webcastingový systém pro OPTONET
Navázali jsme spolupráci se společností Optocon, která je poskytovatelem internetových řešeních pro firemní zákazníky. -
21.03.
2008Aplikace VOX.STREAM na Akademii věd České republiky
Aplikace webcastingového systému VOX.STREAM do prostředí Akademie věd České republiky.