<h2>CSS2 - podpora kaskßdov²ch styl∙ v sedmiΦkovΘ °ad∞ Opery</h2>
<p id='prepend'>P°ed delÜφ dobou vychßzel zde na Intervalu serißl o norm∞ CSS2, kterß znaΦn²m zp∙sobem rozÜi°uje mo₧nosti p∙vodnφch kaskßdov²ch styl∙. SouΦßstφ ka₧dΘho dφlu byla i tabulka demonstrujφcφ podporu jednotliv²ch vlastnostφ CSS2 v r∙zn²ch prohlφ₧eΦφch. Tento Φlßnek doplnφ tyto informace o podporu CSS2 v sedmiΦkovΘ °ad∞ Opery.</p>
<p>Pokud jste p∙vodnφ serißl o CSS2 pozorn∞ sledovali, asi vßm neuÜlo, ₧e u₧ starÜφ Opera 6.x m∞la mnohem lepÜφ podporu druhΘ verze kaskßdov²ch styl∙ ne₧ nejpou₧φvan∞jÜφ Internet Explorer. Podφvejme se, nakolik se tato podpora jeÜt∞ vylepÜila v novΘ °ad∞ Opery. Testovßnφ prob∞hlo v Ope°e 7.22 na platform∞ Windows.</p>
<h3>Selektory</h3>
<p>Zßkladem kaskßdov²ch styl∙ je bezesporu mechanismus selektor∙ umo₧≥ujφcφ jednoznaΦn∞ definovat elementy, na kterΘ se bude aplikovat p°φsluÜn² styl. O nov²ch selektorech normy CSS2 se doΦtete ve Φlßnku <a href='http://interval.cz/clanek.asp?article=1778' title='Dudek, Jan: CSS2 û selektory, pseudot°φdy a pseudoelementy'>CSS2 û selektory, pseudot°φdy a pseudoelementy</a>. Opera je 7.22 vÜechny zvlßdß na jedniΦku: </p>
<div class='table'>
<table cellspacing='0'>
<tr><th>selektor</th><th>syntaxe</th><th>v²znam</th><th>podpora v Ope°e 7.22</th></tr>
<tr><td>typov² selektor</td><td>A</td><td>vÜechny elementy A</td><td>x</td></tr>
<tr><td>selektor t°φdy</td><td>A.trida</td><td>vÜechny elementy A s atributem <samp>class="trida"</samp></td><td>x</td></tr>
<tr><td>ID selektor</td><td>A#mujid</td><td>element A s jedineΦn²m identifikßtorem <samp>id="mujid"</samp></td><td>x</td></tr>
<tr><td>selektor nßslednφka</td><td>A B</td><td>vÜechny elementy B, kterΘ jsou uvnit° elementu A</td><td>x</td></tr>
<tr><td>selektor dφt∞te</td><td>A>B</td><td>vÜechny elementy B, kterΘ jsou dφt∞tem elementu A</td><td>x</td></tr>
<tr><td>selektor p°φmΘho sourozence</td><td>A+B</td><td>vÜechny elementy B, kterΘ majφ stejnΘho rodiΦe jako A jsou v dokumentu hned za nφm</td><td>x</td></tr>
<tr><td>atributovΘ selektory</td><td>A[atr]</td><td>vÜechny elementy A, kterΘ majφ nastaven² atribut atr na libovolnou hodnotu</td><td>x</td></tr>
<tr><td>atributovΘ selektory</td><td>A[atr=hod]</td><td>vÜechny elementy A, kterΘ majφ nastaven² atribut atr na hodnotu hod</td><td>x</td></tr>
<tr><td>atributovΘ selektory</td><td>A[atr~=hod]</td><td>vÜechny elementy A, jejich₧ atribut atr je tvo°en slovy odd∞len²mi mezerami a jedno slovo je rovno hod</td><td>x</td></tr>
<tr><td>atributovΘ selektory</td><td>A[atr|=hod]</td><td>vÜechny elementy A, jejich₧ atribut atr zaΦφnß hod, pokraΦuje pomlΦkou a dalÜφmi znaky</td><td>x</td></tr>
</table>
</div>
<p>Selektory se dßle dajφ rozÜi°ovat o pseudo-t°φdy a pseudo-elementy. Jejich podporu prezentuje nßsledujφcφ tabulka: </p>
<div class='table'>
<table cellspacing='0'>
<tr><th>pseudo-t°φda/pseudo-element</th><th>v²znam</th><th>podpora v Ope°e 7.22</th></tr>
<tr><td>:after</td><td>mφsto za elementem</td><td>x</td></tr>
</table>
</div>
<p>I zde podporuje Opera 7.22 vÜechny d∙le₧itΘ pseudo-t°φdy a pseudo-elementy. Nezvlßdß pouze jazykovou pseudo-t°φdu. Pseudo-t°φda <samp>:focus</samp> je v Ope°e zbyteΦnß, proto₧e nemß ₧ßdn² mechanismus, jak p°edßvat focus jednotliv²m element∙m. Opera podobn∞ jako Mozilla sprßvn∞ interpretuje dynamickΘ pseudo-t°φdy <samp>:hover</samp> a <samp>:active</samp> a umo₧≥uje je aplikovat na libovolnΘ elementy, ne pouze na odkazy, jak se domnφvajφ v²vojß°i z Microsoftu.</p>
<h3>@pravidla</h3>
<p>ZavinßΦovß pravidla dßle rozÜi°ujφ kaskßdovΘ styly o dalÜφ funkce. Umo₧≥ujφ import styl∙, jejich cφlenφ na urΦitß mΘdia, nastavenφ tisknutelnΘ oblasti a definici vlastnφch font∙. Vφce se o nich doΦtete ve Φlßnku <a href='http://interval.cz/clanek.asp?article=1805' title='Dudek, Jan: CSS2 û at rules aneb pravidla zavinßΦe'>CSS2 û at rules aneb pravidla zavinßΦe</a>. Jejich podporu znßzor≥uje tato tabulka: </p>
<div class='table'>
<table cellspacing='0'>
<tr><th>@pravidlo</th><th>v²znam</th><th>podpora v Ope°e 7.22</th></tr>
<p>Importovßnφ i cφlenφ styl∙ zvlßdß Opera 7.22 bez problΘm∙, naopak nezvlßdß technologii stahovateln²ch font∙. O vyu₧itφ @pravidla <samp>@page</samp> se dozvφte v nßsledujφcφch odstavcφch.</p>
<h3>Nastavenφ tisknutelnΘ oblasti</h3>
<p>Pomocφ vlastnostφ uveden²ch uvnit° @pravidla <samp>@page</samp> lze ovlivnit <a href='http://interval.cz/clanek.asp?article=1811' title='Dudek, Jan: CSS2 - pravidlo strßnky'>nastavenφ tisknutelnΘ oblasti</a>. Opera 7.22 umo₧≥uje tato nastavenφ: </p>
<div class='table'>
<table cellspacing='0'>
<tr><th>mo₧nost/vlastnost</th><th>v²znam</th><th>podpora v Ope°e 7.22</th></tr>
<tr><td>size</td><td>velikost tisknutelnΘ oblasti, resp. orientace dokumentu</td><td>x</td></tr>
<tr><td>strßnkovΘ pseudo-t°φdy :first, :left, :right</td><td>pseudo-t°φdy pro prßci s lev²mi, resp. prav²mi strßnkami a titulnφ strßnkou</td><td>ΦßsteΦn∞</td></tr>
<p>Jak vidφte, Opera 7.22 zvlßdß mo₧nosti @pravidla <samp>@page</samp> tak nap∙l. Podporuje nastavenφ okraj∙, velikosti a orientace tisknutelnΘ oblasti. U₧ p∙vodnφ Üestkovß Opera m∞la znaΦnΘ problΘmy se strßnkov²mi pseudo-t°φdami, sedmiΦkovß verze se pouΦila pouze ΦßsteΦn∞. Pro levΘ a pravΘ strßnky lze zvlßÜ¥ nastavit okraje vlastnostφ <samp>margin</samp>, ale nikoliv velikost (resp. orientaci) pomocφ <samp>size</samp>. Navφc jsem p°i testovßnφ asi narazil na bug, pokud pou₧ijete strßnkovou pseudo-t°φdu <samp>:first</samp>, tak nejen ₧e ji Opera neznß, ale navφc nesmysln∞ zaΦne ignorovat i pseudo-t°φdy levΘ a pravΘ strßnky.</p>
<p>Zde tedy Opera 7.22 zrovna nep°esv∞dΦila, budi₧ jφ ke cti, ₧e nejd∙le₧it∞jÜφ nastavenφ, tj. r∙znΘ okraje pro levΘ a pravΘ strßnky, zvlßdß bez problΘmu.</p>
<h3>Generovan² obsah</h3>
<p>Druhß verze kaskßdov²ch styl∙ nßm umo₧≥uje vklßdat do v²slednΘho dokumentu dalÜφ obsah, nap°. text, obsah atribut∙ nebo Φφslovßnφ, na zaΦßtek, resp. konec elementu pomocφ zmφn∞n²ch pseudo-element∙ <samp>:before</samp> a <samp>:after</samp>. TakΘ lze elementu nastavit sprßvnΘ uvozovky, kterΘ se pak okolo n∞j budou automaticky dopl≥ovat. O generovanΘm obsahu pojednßvß Φlßnek <a href='http://interval.cz/clanek.asp?article=1828' title='Dudek, Jan: CSS2 û automaticky generovan² obsah'>CSS2 û automaticky generovan² obsah</a>. Podporu v Ope°e zjistφte z nßsledujφcφ tabulky: </p>
<div class='table'>
<table cellspacing='0'>
<tr><th>vlastnost</th><th>v²znam</th><th>podpora v Ope°e 7.22</th></tr>
<tr><td>content: "°et∞zec"</td><td>vlo₧φ °et∞zec na zaΦßtek/konec elementu</td><td>x</td></tr>
<tr><td>content: url("jmeno_souboru")</td><td>vlo₧φ obsah zadanΘho souboru</td><td>x</td></tr>
<tr><td>content: attr(atr)</td><td>vlo₧φ obsah zadanΘho atributu</td><td>x</td></tr>
<p>V p°φpad∞ generovanΘho Φφslovßnφ nemßm k Ope°e 7.22 ₧ßdnΘ nßmitky. Bez problΘm∙ zvlßdß vklßdßnφ jakΘhokoliv obsahu p°ed a za element a problΘmy jφ ned∞lajφ ani uvozovky nebo Φφslovßnφ element∙.</p>
<h3>Vizußlnφ model</h3>
<p>Spoustu mo₧nostφ p°ineslo CSS2 do vizußlnφho modelu. P°edevÜφm p°ibyly novΘ hodnoty pro st∞₧ejnφ vlastnost <samp>display</samp>. O t∞chto zm∞nßch se doΦtete ve Φlßnku <a href='http://interval.cz/clanek.asp?article=1845' title='Dudek, Jan: CSS2 û vizußlnφ formßtovacφ model'>CSS2 û vizußlnφ formßtovacφ model</a>. Nynφ ji₧ k podpo°e t∞chto hodnot v Ope°e: </p>
<div class='table'>
<table cellspacing='0'>
<tr><th>hodnota vlastnosti display</th><th>podpora v Ope°e 7.22</th></tr>
<tr><td>run-in</td><td>x</td></tr>
<tr><td>compact</td><td>x</td></tr>
<tr><td>marker</td><td>-</td></tr>
<tr><td>inline-table</td><td>x</td></tr>
</table>
</div>
<p>DalÜφ novinkou je nastavenφ minimßlnφ, respektive maximßlnφ velikosti elementu: </p>
<div class='table'>
<table cellspacing='0'>
<tr><th>vlastnost</th><th>v²znam</th><th>podpora v Ope°e 7.22</th></tr>
<p>A koneΦn∞ takΘ norma CSS2 definovala novΘ vlastnosti pou₧itelnΘ pro dynamickΘ efekty vyvolanΘ n∞kter²m skriptovacφm jazykem: </p>
<div class='table'>
<table cellspacing='0'>
<tr><th>vlastnost</th><th>v²znam</th><th>podpora v Ope°e 7.22</th></tr>
<tr><td>overflow</td><td>chovßnφ elementu p°i p°eteΦenφ</td><td>x</td></tr>
<tr><td>clip</td><td>nastavenφ zobrazovanΘ oblasti elementu</td><td>x</td></tr>
<tr><td>visibility</td><td>viditelnost obsahu elementu</td><td>x</td></tr>
</table>
</div>
<p>Narozdφl od p°edeÜlΘ ÜestkovΘ verze se Opera 7.22 v implementaci t∞chto vlastnostφ znaΦn∞ zlepÜila. Nejd∙le₧it∞jÜφ zm∞nou bezesporu je, ₧e ji₧ dokß₧e element∙m s p°eteΦen²m obsahem sprßvn∞ p°i°adit scrollbary, pokud je o to po₧ßdßna hodnotami <samp>scroll, auto</samp> vlastnosti <samp>overflow</samp>.</p>
<h3>CSS2 a tabulky</h3>
<p>Velk² pokrok v CSS2 takΘ zaznamenala <a href='http://interval.cz/clanek.asp?article=1874' title='Dudek, Jan: CSS2 û formßtovacφ mo₧nosti tabulek'>podpora tabulek</a>. V minulΘ kapitole jsme si ukßzali, ₧e Opera 7.22 podporuje hodnotu <samp>inline-table</samp> vlastnosti <samp>display</samp>, tedy vlo₧enφ tabulky jako °ßdkov² element. Zde je v²Φet dalÜφch vlastnostφ: </p>
<div class='table'>
<table cellspacing='0'>
<tr><th>vlastnost</th><th>v²znam</th><th>podpora v Ope°e 7.22</th></tr>
<tr><td>caption-side</td><td>umφst∞nφ popisu tabulky</td><td>ΦßsteΦn∞</td></tr>
<tr><td>text-align: "znak"</td><td>zarovnßnφ obsahu bun∞k na urΦit² znak</td><td>-</td></tr>
<tr><td>border-collapse</td><td>nastavenφ druhu okraje tabulky</td><td>x</td></tr>
<tr><td>border-spacing</td><td>mezera mezi bu≥kami</td><td>x</td></tr>
<tr><td>empty-cells</td><td>chovßnφ okraje u bun∞k bez obsahu</td><td>x</td></tr>
<tr><td>border: hidden;</td><td>zruÜenφ okraje u zhroucenΘho modelu</td><td>x</td></tr>
</table>
</div>
<p>I v p°φpad∞ tabulek zvlßdß Opera vÜechny d∙le₧itΘ vlastnosti, neumφ pouze zarovnßvat obsahy bun∞k pod sebe na urΦit² znak a nepodporuje dynamickΘ schovßvßnφ °ßdk∙. Polohu popisu tabulky zvlßdß nap∙l, umφ jej umφstit nahoru a dol∙, ale u₧ ne vlevo nebo vpravo od tabulky.</p>
<h3>Polohovßnφ</h3>
<p>Poslednφ skupina vlastnostφ umo₧≥uje umφs¥ovat elementy mimo normßlnφ tok dokumentu. Takto se dajφ vytvß°et tzv. CSS layouty. O polohovßnφ se doΦtete vφce ve Φlßnku <a href='http://interval.cz/clanek.asp?article=1883' title='Dudek, Jan: CSS2 û pozicovßnφ element∙'>CSS2 û pozicovßnφ element∙</a>. Nßsleduje poslednφ tabulka tohoto Φlßnku reprezentujφcφ podporu polohovacφch vlastnostφ v Ope°e:</p>
<div class='table'>
<table cellspacing='0'>
<tr><th>vlastnost</th><th>v²znam</th><th>podpora v Ope°e 7.22</th></tr>
<p>V Ope°e se tedy nebojte zobrazovat jakΘkoliv strßnky s CSS layoutem, m∞la by je zvlßdnout bez problΘm∙.</p>
<h3>Opera a XML</h3>
<p>Opera dßle umo₧≥uje zobrazovat obecnΘ XML soubory. Pokud jim nep°i°adφte ₧ßdn² styl, budou vÜechny elementy vypsßny za sebou jako °ßdkovΘ elementy, p°esn∞ podle normy. V opaΦnΘm p°φpad∞ bude dokument sprßvn∞ naformßtovßn podle danΘho stylu.</p>
<h3>Nastavenφ posuvnφk∙</h3>
<p>Internet Explorer p°iÜel s mo₧nostφ nastavit pomocφ svΘho rozÜφ°enφ CSS barvu posuvnφk∙ (scrollbar∙). SedmiΦkovß Opera tuto mo₧nost podporuje takΘ. Ale proto₧e jde o nestandardnφ rozÜφ°enφ, musφte to nejd°φve povolit. Provedete to p°es <kbd class='mouse'>File|Preferences|Page style</kbd> zaÜkrtnutφm mo₧nosti <strong>Enable styling of scrollbars</strong>.</p>
<h3>ProblΘmy se zalomenφm</h3>
<p>Zatφm jsem Operu po°ßd jenom chvßlil, ale samoz°ejm∞ nenφ bez chyby. Tou nejzßva₧n∞jÜφ je obΦasnΘ nesprßvnΘ interpretovßnφ elementu <samp>br</samp>, za kterΘ pravd∞podobn∞ m∙₧e n∞jakß chyba ve zpracovßnφ kaskßdov²ch styl∙. Zkrßtka jde o to, ₧e sedmiΦkovß Opera v n∞kter²ch sv²ch verzφch zdvojφ zalomenφ vyvolanΘ pomocφ <samp><br /></samp> a v jin²ch ho ·pln∞ ignoruje, resp. vlo₧φ mφsto n∞j nesmyslnΘ znaky. Je zvlßÜtnφ, ₧e se tak ned∞je ve vÜech elementech, ale pouze v n∞kter²ch. ╪eÜenφ tohoto problΘmu sice existuje, ale nenφ ·pln∞ dokonalΘ. V adresß°i <em>Styles</em> domovskΘho adresß°e Opery vlo₧te do souboru <em>user.css</em> nßsledujφcφ dva °ßdky: </p>
<p>Nßsledn∞ se podφvejte do <kbd class='mouse'>File|Preferences|Page style</kbd> a v poli <strong>My style sheet</strong> zadejte cestu se jmΘnem editovanΘho souboru (pokud tam jeÜt∞ nenφ). Pak klikn∞te na tlaΦφtko <strong>Configure modes...</strong> a v nßsledujφcφm formulß°i zaÜkrtn∞te <kbd class='mouse'>My style sheet</kbd> pro oba m≤dy.</p>
<p>Jak u₧ jsem p°edesφlal, ani toto °eÜenφ nenφ bez chyby. Aplikovßnφ uvedenΘho stylu mß toti₧ za nßsledek, ₧e vÜechna vφcenßsobnß zalomenφ se smrsknou do jednoho.</p>
<h3>Zßv∞r</h3>
<p>I p°es problΘmy se zalamovßnφm je sedmiΦkovß Opera modernφ a v²born∞ pou₧iteln² prohlφ₧eΦ, kter² podporuje drtivou v∞tÜinu mo₧nostφ CSS2. Uvidφme, jak (a zdali) na to Microsoft zareaguje a spoleΦn∞ s nov²m operaΦnφm systΘmem koneΦn∞ p°ijde se skuteΦn∞ pou₧iteln²m prohlφ₧eΦem.</p>
<div class='refer'>
<h3>P°edchozφ Φlßnky</h3>
<ul>
<li><a href='http://interval.cz/clanek.asp?article=1900'>CSS2 û mluvenΘ styly</a></li>
<li><a href='http://interval.cz/clanek.asp?article=1883'>CSS2 û pozicovßnφ element∙</a></li>
<li><a href='http://interval.cz/clanek.asp?article=1874'>CSS2 û formßtovacφ mo₧nosti tabulek</a></li>
<li><a href='http://interval.cz/clanek.asp?article=1845'>CSS2 û vizußlnφ formßtovacφ model</a></li>
<li><a href='http://interval.cz/clanek.asp?article=1828'>CSS2 û automaticky generovan² obsah</a></li>
<li><a href='http://interval.cz/clanek.asp?article=1811'>CSS2 û pravidlo strßnky</a></li>
<li><a href='http://interval.cz/clanek.asp?article=1805'>CSS2 û at rules aneb pravidla zavinßΦe</a></li>
<li><a href='http://interval.cz/clanek.asp?article=1778'>CSS2 û selektory, pseudot°φdy a pseudoelementy</a></li>
<li><a href='http://interval.cz/clanek.asp?article=1745'>CSS2 û KaskßdovΘ styly podruhΘ</a></li>
<li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2856'>ZnakovΘ sady v praxi</a></li>
<li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2849'>Vytvß°enφ dokument∙ PDF v PHP</a></li>
<li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2852'>Interval v zajetφ Φφsel</a></li>
<li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2850'>CSS2 - podpora kaskßdov²ch styl∙ v sedmiΦkovΘ °ad∞ Opery</a></li>
<li><a href='http://interval.cz/redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=2844'>P.E.T. - jednoduch² Üablonovacφ systΘm v PHP</a></li>