Přechody v CSS – dynamické vizuální filtry
Dalším nástrojem ke zpestření vašich internetových stránek mohou být právě přechody – rozpohybované vizuální filtry z dílny Microsoftu. V tomto článku bude řeč o dvou prapůvodních, stmívacím přechodu BlendTrans a zobrazovacím přechodu RevealTrans.
Přechody
Přechody v CSS (kaskádových stylech) velice úzce souvisí se statickými filtry, o kterých již byla na Intervalu řeč například v článku Statické filtry v CSS a několika dalších, a mají spolu také mnoho společného. Přechody jsou dynamické filtry, ovlivňující zobrazení změny obsahu prvku. V podstatě se jedná o animační efekty, použité pro přechod mezi původním a novým obsahem prvku. Sami o sobě ale nic neudělají, proto je potřeba je doplnit o jednoduché skripty iniciující vlastní přechody. Za oživení vaší stránky přechodem v podstatě nic nedáte a návštěvníka třeba příjemně naladíte pomalu se měnícím textem či obrázkem.
Syntaxe vlastnosti filter
Pro definování přechodů používáme stejně jako u statických filtrů vlastnosti filter
jazyka CSS, která zatím není zahrnuta do žádného standardu CSS. Microsoft nám použití vlastnosti filter ještě více zkomplikoval, nahradil původní jednodušší syntaxi svou vlastní, která je složitější a použitelná pouze v prohlížečích MSIE 5.5 a vyšších. Dále v textu bude řeč o přechodech BlendTrans a RevealTrans, které využívají i původní syntaxi. Pro novou syntaxi jsou tyto dva přechody nahrazeny a doplněny novými přechody, více najdete v dokumentaci na stránkách MSDN Microsoftu.
Syntaxe vlastnosti filter v CSS:
{ filter: nazev_prechodu(prechod_param1, prechod_param2, prechod_param3, …); }
Synatxe podle Microsoftu:
{ filter: progid:DXImageTransform.Microsoft.Nazev_prechodu(prechod_param1, prechod_param2, prechod_param3, …); }
Syntaxe pro přístup skriptů:
objekt.style.filter = „nazev_prechodu(prechod_param1, prechod_param2, prechod_param3, …)“
Přechody v CSS jsou v současné době bez problémů použitelné v prohlížečích MSIE 5.5 a vyšších. Nejsou zatím ale součástí žádných standardů, i když do připravované definice CSS3 by již měli být zahrnuty. Starou syntaxi s těmito dvěma přechody podporují u vybraných elementů prohlížeče MSIE již od verze 4.0.
Řídící skripty
Pro iniciaci přechodů musíme používat řídících skriptů, napsaných nejlépe ve skriptovacím jazyku JScript. Pro využití přechodů je připravena událost onfilterchange
, jejíž stav můžeme zjistit také pomocí vlastnosti srcFilter
objektu event, a metody apply, play a stop
.
Synatxe pro přístup k metodám:
objekt.filters[id_prechodu].Nazev_metody([parametr_prechodu])
Metoda | Parametry | Popis |
---|---|---|
apply | – | Získá počáteční obsah objektů pro přechod. Přechod neproběhne, dokud nezavoláme metodu play. |
play | duration | Spustí přechod. Parametr duration nastavuje délku přehrávání přechodu v sekundách a je nepovinný. |
stop | – | Zastaví přehrávání přechodu. |
Poznámka: Pokud je nastavena hodnota parametru duration metody play, pak jsou ignorovány všechna nastavení vlastnosti Duration u jednotlivých přechodů.
Často využíváme u přechodných prvků k dosažení animačního efektu vlastnost visibility
jazyka CSS, která může nabývat hodnot visible, hidden a inherit (přednastevený)
. Nastavením vlastnosti visibility u jednoho z přechodných prvků na hodnotu hidden docílíme toho, že bude zobrazen pouze jeden přechodný prvek a ostatní se zobrazí až při vyvolání přechodu. Po zavolání metody apply() pak musíme nastavit konečné hodnoty vlastnosti visibility. Názornou ukázku předkládám v příkladech u přechodů.
Přechod BlendTrans
Takzvaný stmívací přechod. Nový obsah prvku zobrazí zmizením nebo objevením původního obsahu prvku. Pro novou syntaxi je též označován jako přechod Fade.
Syntaxe:
{ filter: blendtrans(duration=floating-point,enabled=boolean,percent=string,status=integer); }
Parametry:
Parametr | Popis |
---|---|
Duration | Určuje délku trvání celého přechodu. Udává se v sekundách.milisekundách (0.0000). |
Enabled | Určuje možnost použití přechodu. Může nabývat hodnot true (zapnutý) nebo false (vypnutý). |
Percent | Nastaví bod, ve kterém se přechod zastaví a dosáhne tím efektu statického filtru. Může nabývat hodnot 0 až 100. |
Status | Uchovává aktuální stav přechodu. Může nabývat hodnot 0 – přechod stojí, 1 – přechod je aplikován, 2 – přechod probíhá. |
A nyní si všechno ukážeme a vysvětlíme na jednoduchém příkladu použití BlendTrans, využívajícím přechodu ke zmizení a zobrazení textu. Nejprve potřebujeme vytvořit ovládací skript, ve kterém definujeme dvě funkce – jednu pro zobrazení a druhou pro zmizení textu. Potom už jenom přidáme prvek obsahující mizící text a dvě ovládací tlačítka. Přechod BlendTrans si také můžete vyzkoušet přímo na stránkách MSDN.
Zdrojový kód ovládacího skriptu:
<script>
<!–
function zmiz() {
if (prvek.filters[0].status!=2){
prvek.filters[0].apply();
prvek.style.visibility=“hidden“;
prvek.filters[0].play();}}
function zobraz() {
if (prvek.filters[0].status!=2){
prvek.filters[0].apply();
prvek.style.visibility=“visible“;
prvek.filters[0].play();}}
–>
</script>
Po zavolání funkce zmiz()
skript nejprve projde podmínku a pokud paramter status
filtru BlendTrans není roven 2, tedy pokud přechod právě neběží, připraví přechod pomocí metody apply()
, nastaví výslednou hodnotu vlastnosti visible
prvku na hidden a pak již spustí samotný přechod metodou play()
. Obdobně je tomu i u funkce zobraz()
, pouze s tím rozdílem, že výslednou hodnotu vlastnosti visible
nastaví na visible.
Zdrojový kód prvku a tlačítek:
<div id=“prvek“ style=“width: 200px; filter: blendtrans(duration=2);“>Příklad využití filtru blendTrans</div>
<button onclick=“zmiz()“>Zmiz</button>
<button onclick=“zobraz()“>Zobraz</button>
Nejdůležitějším prvkem je pro nás v tomto případě prvek div, označený pomocí atributu id jako prvek
. V atributu style jsme definovali pomocí vlastnosti filter
přechod BlendTrans s parametrem duration nastaveným na hodnotu 2s. Tlačítko Zmiz volá po kliknutí funkci zmiz()
, definovanou předtím v ovládacím skriptu. Stejně tak tlačítko Zobraz volá funkci zobraz()
. Pro správné fungování přechodu nesmíme, stejně jako u statických filtrů, zapomenout u elementů div a span definovat atribut width nebo height!
Přechod RevealTrans
Takzvaný zobrazovací přechod. Nový obsah prvku zobrazí použití jednoho ze čtyřiadvaceti předdefinovaných přechodů. Pro novou syntaxi je nahrazen několika samostatnými přechody.
Syntaxe:
{ filter: revealtrans(duration=floating-point, enabled=boolean, percent=string, status=integer, transition=integer); }
Parametry:
Parametr | Popis |
---|---|
Duration | Určuje délku trvání celého přechodu. Udává se v sekundách.milisekundách(0.0000). |
Enabled | Určuje možnost použití přechodu. Může nabývat hodnot true(zapnutý) nebo false(vypnutý). |
Percent | Nastaví bod, ve kterým se přechod zastaví a dosáhne tím efektu statického filtru. Může nabývat hodnot 0-100. |
Status | Nastaví polohu přechodu. Může nabývat hodnot 0,1,2,3 |
Transition | Určí typ přechodu. Může nabývat hodnot 0-23 viz. následující tabulka. |
Hodnoty parametru Transition:
Hodnota | Popis | Nový filtr |
---|---|---|
0 | Srolováním do čtverce. | Iris |
1 | Srolováním ze čtverce. | Iris |
2 | Srolováním do kruhu | Iris |
3 | Srolováním ze kruhu. | Iris |
4 | Srolováním ze spoda. | Slide |
5 | Srolováním shora. | Slide |
6 | Srolováním zleva. | Slide |
7 | Srolováním zprava. | Slide |
8 | Svislými pruhy zleva. | Blinds |
9 | Vodorovnými pruhy shora. | Blinds |
10 | Šachovnicí zleva. | CheckerBoard |
11 | Šachovnicí shora. | CheckerBoard |
12 | Zrněním. | RandomDissolve |
13 | Svislým rozdělením do středu. | Barn |
14 | Svislým rozdělením ze středu. | Barn |
15 | Vodorovným rozdělením do středu. | Barn |
16 | Vodorovným rozdělením ze středu. | Barn |
17 | Zubatým pruhem zprava nahoru. | Strips |
18 | Zubatým pruhem zprava nahoru. | Strips |
19 | Zubatým pruhem zleva dolů. | Strips |
20 | Zubatým pruhem zleva nahoru. | Strips |
21 | Náhodnými linkami vodorovně. | RandomBars |
22 | Náhodnými linkami svisle. | RandomBars |
23 | Náhodný přechod ze všech předdefinovaných. | – |
Samozřejmě jsem pro vás připravil i jednoduchý příklad použití RevealTrans. Nejprve vytvoříme ovládací skript, ve kterém definujeme funkci pro spuštění přechodu. Pak již stačí jen přidat kontejner obsahující dva přechodné prvky a tlačítko, pomocí kterého celý přechod spustíme. Připravenou ukázku všech čtyřiadvaceti předdefinovaných přechodů přechodu RevealTrans můžete shlédnout a také vyzkoušet přímo na stránce Microsoftu.
Zdrojový kód ovládacího skriptu:
<script>
<!–
var stav = 0;
function prechod() {
kontejner.filters[0].Apply();
if (stav==0) {
stav = 1;
obr2.style.visibility=“visible“;
obr1.style.visibility=“hidden“;}
else {
stav = 0;
obr2.style.visibility=“hidden“;
obr1.style.visibility=“visible“;}
kontejner.filters[0].Play();}
–>
</script>
Nejprve definujeme proměnou stav
, která zajištěje pravidelné střídání zobrazených obrázků, a přiřadíme jí hodnotu 0. Funkce prechod()
si připraví přechod pomocí metody apply()
. Potom projde podmínku, která na základě proměnné stav
zajišťuje střídání obrázků, a patřičně nastaví hodnoty proměnné stav
a vlastnost visibility
u prvků obr1
a obr2
. Nakonec spustí přechod zavoláním metody play()
daného přechodu.
Zdrojový kód prvků a tlačítka:
<span id=“kontejner“ style=“width:150px; height:50px; filter:revealtrans(duration=5,transition=8);“>
<span id=“obr1″ style=“background-image: url(revealtrans1.gif);“>
<span id=“obr2″ style=“visibility:hidden; background:white;“><img src=“revealtrans2.gif“ width=“126px“ height=“40px“ alt=“Logo Microsoftu“ /></span>
</span>
</span>
<button onclick=“prechod()“>Přechod</button>
Oba přechodné prvky označené jako obr1
a obr2
jsme vložili do prvku kontejner
, u kterého jsme pomocí atributu style a vlastnosti filter
definovali přechod RevealTrans s parametrem duration nastaveným 5s a transition nastaveným na hodnotu 8, což je přechod svislými pruhy zleva. Prvek obr1
s vnořeným prvkem obr2
tvoří dvojici přechodných prvků, přičemž u prvku obr2
je přednastavena hodnota vlastnosti visibility
na hidden, tedy skryto. Stejného efektu bychom jednodušeji dosáhli použitím absolutního polohování obou prvků s obrázky nad sebe. Tlačítko Přechod už jenom po kliknutí volá funkci přechod()
definovanou v ovládacím skriptu. Nesmíme zase zapomenout na definování atributu width nebo height u tagů div a span!
Další zdroje
- MSDN Microsoft – asi nejucelenější zdroj informací o problematice přechodů
- W3C – referenční autorita jazyka CSS
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Gaming na HDR monitoru: Stojí to za to?
12. srpna 2024 -
Vaše pošta může být špatně nastavena – svěřte ji profesionálům
13. července 2023 -
Lék na phishing a apatii ve světě e-mailového marketingu
18. března 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024