Grafické efekty pomocou CSS3
Dakedy dávno, ešte na prvých prednáškach tohto projektu sme spomenuli, že všetko v oblasti IT (a v podstate ako aj v iných oblastiach) sa neustále vyvíja. Každý jeden jazyk alebo technológia, o ktorej sme sa rozprávali, sa neustále vylepšuje a vychádzajú zaradom novšie a novšie verzie, či je to PHP, HTML, MAMP, phpMyAdmin...jednoducho všetko. Tá novšia verzia spravidla obsahuje opravy chýb alebo nedostatkov, ktoré niesla predošlá verzia a samozrejme, obsahuje aj niečo nové – atraktívne – lepšie navyše. Inak to nie je ani v prípade jazyka CSS.
Ako vieme, kaskádové štýly vznikli na to, aby sme mohli nastaviť nejaký dizajn, resp. grafický vzhľad jednotlivých elementov na stránke, ich usporiadanie a v podstate aj celú štruktúru stránky. Dosť dlho bolo možné pomocou jazyka CSS nastaviť iba taký základný – štandardný dizajn. Stránky mali spočiatku informačnú funkciu, neskôr slúžili na vykonávanie nejakej činnosti (správu) a postupne s ďalším vývojom už aj v konečnom dôsledku vyzerali pekne a reprezentatívne. S rýchlym vývojom sa začali objavovať požiadavky z praxe na ešte niečo krajšie.
Celá počítačová grafika napredovala a tak sa na stránkach začali objavovať dynamickejšie elementy ako niečo lietajúce, hýbajúce sa, krajšie efekty, vysúvacie okná, niečo čo sa zobrazilo z bublinky a podobné krasotinky. Všetko toto sa spočiatku nedalo robiť pomocou jazyka CSS, ale využíval sa na to skôr jazyk JavaScript. Takto to bolo dosť dlho, až kým si ľudia zodpovedný za CSS nepovedali, prečo by sme nevymysleli aj my nejaké také veci v CSS, pomocou ktorých by sa to dalo. A tak vznikla posledná verzia jazyka CSS3, v ktorej sa jednotlivé časti (moduly – vymoženosti) týkajú najmä takéhoto obohatenia webovej stránky.
Vymožeností, ktoré je možné spraviť pomocou funkcií po verzii CSS3 je strašne veľa a samozrejme nejdeme sa im všetkým venovať. Je ale dobré, že sme si obzrejmili, že niečo také existuje a ukážeme si len zopár funkcií, aby ste pochopili, o čom asi je reč a čo myslíme tými dynamickejšími prvkami a krasotinkami:) Pri zadívaní vlastností a hodnôt sa nič nemení, všetko je tak ako predtým. Ešte len spomeniem, že keďže je to posledná a v podstate dosť nová verzia jazyka CSS, tak niektoré staršie prehliadače ju nepodporujú. Patria medzi ne napríklad staršie verzie Internet Explorera, ale k tomu sa nejdem zbytočne vyjadrovať ;-) Normálne prehliadače ako Firefox alebo Chrome s tým problém nemajú...
Poďme si už ale ukázať nejaké tie fintičky a troška si skrášlime našu stránku. Pomerne často používané grafické vylepšenie elementov – blokov, je že sa im zahnú rohu, resp. sa im určia zaoblené rohy, nie hranaté, ako to máme všade doteraz. Je to možné pomocou vlastnosti s názvom border-radius (radius – zaoblenie), ktorej hodnota je jedna alebo viacero číselných hodnôt v pixeloch.
Štandardne, pri zadanej jednej hodnote sa nastaví zaoblenie rovnako na všetky 4 rohy, pri zadaní 4 hodnôt dookola od ľavého horného rohu, pri zadaní troch hodnôt ide prvá vľavo hore druhá vpravo hore a vľavo dole a posledná vpravo dole. Pri zadaní 2 hodnôt to ide oproti od ľavého horného rohu, takže ľavý horný a pravý dolný má prvé číslo a pravý horný a ľavý dolný má druhé číslo. Dané číslo znamená veľkosť polomeru kruhu, ktorý sa akokeby aplikuje na roh elementu (polomer je vzdialenosť od stredu kruhu k jeho okraju). Na ukážky si to aplikujeme na blok celej našej stránky a potom napríklad na formulár pre filtrovanie. Mohlo by to vyzerať asi takto:
view.php:
…
<h2>Zoznam používateľov</h2>
<!-- Formular na filtrovanie usera -->
<form class="contact_form filter_box" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="get">
...
global.css:
.main{
background-color: #f6f7f1;
width: 900px;
margin: auto;
margin-top: 20px;
margin-bottom: 20px;
border-radius: 10px;
}
...
text-align: center;
}
.filter_box{
border-radius: 40px 10px;
}
.contact_form INPUT, .contact_form TEXTAREA, .contact_form LABEL{
display: block;
width: 100%;
}
…
Ako vidíte na ukážke, najprv sme pridali rovnaké zaoblenie rohov pre hlavný blok našej stránky (main). Potom sme pridali pre formulár na filtrovanie novú triedu (filter_box), ktorej sme nastavili zaoblenie cez dve hodnoty, takže rohy ležiace oproti sebe majú rovnaké zaoblenie, ako vidno na ukážke. Túto vlastnosť je samozrejme možné záťadva aj po jednom, resp. individuálne pre jednotlivé rohy vymenovaním pozície medzi slovo border a radius, takže napr. border-top-left-radius, border-bottom-right-radius a podobne...
Ďalšie efekty si budeme ukazovať v časti fotoageléria, aby sme už domovskú stránku nemali preplnenú. Asi najčastejšie využívaný efekt je tieň, ktorý tvoria elementy. Pozánte ho ako niečo tak ľahko priesvitné a strácajúce sa smerom od stredu elementu do vonka, najčastejšie je dookola celého elementu. Tento efekt je možné nastaviť aj na písmo, ako aj na elementy (priestorové – tvaru obdĺžnika– nie text).
Pre text sa tento efekt zadáva pomocou vlastnosti text-shadow (tieň textu), ktorá môže obsahovať viacero variant ako hodnotu. Pri zadaní iba dvoch čísiel (číslo v pixeloch) zadávame vzdialenosť tieňa, ktorý bude tvorený tým istým textom (hrúbka, farba, veľkosť, priehľadnosť), kde prvé číslo značí horizontálnu vzdialenosť (vľavo vpravo) a druhé vertikálnu (hore dole). K číselným vyjadreniam sa zvykne zadať aj farba tieňa, vo väčšine iná ako samotný text, aby to nesplívalo a slabšia – menej výrazná.
Pri zadaní dvoch čísel a farby dostaneme teda ostrý jasný tieň, akokeby normálny text (plnej priehľadnosti – žiadne miznutie do priestora) posunutý o istú časť – vo väčšine smerom doprava a dole. Toto nie je to najlepšie použitie, ak sa nezadá oveľa menej výrazná farba ako samotné písmo, tak to dosť splýva a tieň je dosť výrazný. Úplne najkrajšie je to ale samozrejme so spomenutým efektom miznutia do priestoru, ktorý sa zvykne nazývať blur (škvrna, machuľa). Ten docielime zadaním tretieho čísla za spomenuté dva a pred zadaním farby, taktiež v pixeloch. Táto hodnota v tomto prípade značí akokeby mieru zamachulenia (aké pekné slovo) alebo skôr akú veľkú plochu bude zaberať výsledná machuľa – rozmazanie. Ukážeme si to na praktickej ukážke a následne si skúste cez webové nástroje tieto hodnoty meniť, aby ste videli ich význam.
fotogaleria.php:
…
$pageLink++;
}
echo '</ul>';
?>
<h2 style="text-shadow: 4px 4px 5px #5b6b78;">Na tento text sme si aplikovali shadooooooow!</h2>
</div>
...
Ako vidíte, skutočne sa akokeby v pozadí nášho textu nachádza tieň, ktorý je rozmazaný. Ako sme povedali, pohrajte sa s týmito hodnotami, aby ste videli, ako to funguje, najmä s tou treťou. Takýto tieň sa v IT brandži zvykne veľmi často nazývať drop shadow (drop – spadnúť, dopadnúť), pretože je tvorený akokeby dopadajúcim svetlom na daný objekt z daného smeru. Aby sme sa rozumeli, keďže teraz máme tieň pod textom smerom doprava, tak ho vytvára akokeby svetlo, ktoré svieti zhora a zľava na náš objekt v priestore.
Podobne sa zadáva tieň aj pre priestorové elementy vlastnosťou box-shadow (tieň rámca alebo čo :-D ). Túto vlastnosť môžeme aplikovať ako sme povedali na priestorové (najčastejšie blokové) elementy a tieň sa tým pádom vytvorí okolo akokeb hrán – rozmerov daného elementu. Tieto pravidlá sa dajú medzi sebou aj kombinovať, to znamená, že si v jednom riadku vieme zadať napríklad tieň, ktorý bude vpravo dole a za čiarkou a zadaním ďalšieho pravidla zadať tieň vľavo a hore a tým získame tieň okolo celého elemetnu. Poďme si toto aplikovať na náš hlavný div:
global.css:
…
.main{
background-color: #f6f7f1;
width: 900px;
margin: auto;
margin-top: 20px;
margin-bottom: 20px;
border-radius: 10px;
box-shadow: 5px 5px 5px #CCCCCC, -5px -5px 5px #CCCCCC;
}
.header{
…
Ako vidíte vo výsledku, okolo nášho main boxu sa vytvoril slabý pekný tieň. Všimnite si, že smer doľava a hore sme zadali negatívnymi hodnotami v pixeloch. Podobne ako pri iných vlastnostiach sa smery určujú od stredu elementu, kde negatívna je vľavo a hore a pozitívna vpravo a dole. Pekné však?