Navigace

Hlavnφ menu

 

CSS2 - podpora kaskßdov²ch styl∙ v sedmiΦkovΘ °ad∞ Opery

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.

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.

Selektory

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 CSS2 û selektory, pseudot°φdy a pseudoelementy. Opera je 7.22 vÜechny zvlßdß na jedniΦku:

selektorsyntaxev²znampodpora v Ope°e 7.22
univerzßlnφ selektor*AvÜechny elementyx
typov² selektorAvÜechny elementy Ax
selektor t°φdyA.tridavÜechny elementy A s atributem class="trida"x
ID selektorA#mujidelement A s jedineΦn²m identifikßtorem id="mujid"x
selektor nßslednφkaA BvÜechny elementy B, kterΘ jsou uvnit° elementu Ax
selektor dφt∞teA>BvÜechny elementy B, kterΘ jsou dφt∞tem elementu Ax
selektor p°φmΘho sourozenceA+BvÜechny elementy B, kterΘ majφ stejnΘho rodiΦe jako A jsou v dokumentu hned za nφmx
atributovΘ selektoryA[atr]vÜechny elementy A, kterΘ majφ nastaven² atribut atr na libovolnou hodnotux
atributovΘ selektoryA[atr=hod]vÜechny elementy A, kterΘ majφ nastaven² atribut atr na hodnotu hodx
atributovΘ selektoryA[atr~=hod]vÜechny elementy A, jejich₧ atribut atr je tvo°en slovy odd∞len²mi mezerami a jedno slovo je rovno hodx
atributovΘ selektoryA[atr|=hod]vÜechny elementy A, jejich₧ atribut atr zaΦφnß hod, pokraΦuje pomlΦkou a dalÜφmi znakyx

Selektory se dßle dajφ rozÜi°ovat o pseudo-t°φdy a pseudo-elementy. Jejich podporu prezentuje nßsledujφcφ tabulka:

pseudo-t°φda/pseudo-elementv²znampodpora v Ope°e 7.22
:linknenavÜtφven² odkazx
:visitednavÜtφven² odkazx
:hovernad elementem je kurzorx
:activeelement je aktivovßnx
:focuselement je zam∞°en (focused)-
:lang(jazyk)element je napsßn v danΘm jazyce-
:first-childelement je prvnφm dφt∞tem jinΘho elementux
:first-letterprvnφ pφsmeno elementux
:first-lineprvnφ °ßdek elementux
:beforemφsto p°ed elementemx
:aftermφsto za elementemx

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 :focus 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 :hover a :active a umo₧≥uje je aplikovat na libovolnΘ elementy, ne pouze na odkazy, jak se domnφvajφ v²vojß°i z Microsoftu.

@pravidla

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 CSS2 û at rules aneb pravidla zavinßΦe. Jejich podporu znßzor≥uje tato tabulka:

@pravidlov²znampodpora v Ope°e 7.22
@import "styl.css";importuje styl.cssx
@import "styl.css" media;na za°φzenφ odpovφdajφcφ media importuje styl.cssx
@media media {}styl ve slo₧en²ch zßvorkßch bude aplikovßn pouze na danΘm za°φzenφx
@fontface {}definice novΘho fontu-
@page {}nastavenφ tisknutelnΘ oblastix

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 @page se dozvφte v nßsledujφcφch odstavcφch.

Nastavenφ tisknutelnΘ oblasti

Pomocφ vlastnostφ uveden²ch uvnit° @pravidla @page lze ovlivnit nastavenφ tisknutelnΘ oblasti. Opera 7.22 umo₧≥uje tato nastavenφ:

mo₧nost/vlastnostv²znampodpora v Ope°e 7.22
margin-left,...okraje tisknutelnΘ oblastix
sizevelikost tisknutelnΘ oblasti, resp. orientace dokumentux
strßnkovΘ pseudo-t°φdy :first, :left, :rightpseudo-t°φdy pro prßci s lev²mi, resp. prav²mi strßnkami a titulnφ strßnkouΦßsteΦn∞
@page jmeno_stranky {}pojmenovanΘ strßnky-

Jak vidφte, Opera 7.22 zvlßdß mo₧nosti @pravidla @page 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φ margin, ale nikoliv velikost (resp. orientaci) pomocφ size. Navφc jsem p°i testovßnφ asi narazil na bug, pokud pou₧ijete strßnkovou pseudo-t°φdu :first, tak nejen ₧e ji Opera neznß, ale navφc nesmysln∞ zaΦne ignorovat i pseudo-t°φdy levΘ a pravΘ strßnky.

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.

Generovan² obsah

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∙ :before a :after. 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 CSS2 û automaticky generovan² obsah. Podporu v Ope°e zjistφte z nßsledujφcφ tabulky:

vlastnostv²znampodpora v Ope°e 7.22
content: "°et∞zec"vlo₧φ °et∞zec na zaΦßtek/konec elementux
content: url("jmeno_souboru")vlo₧φ obsah zadanΘho souborux
content: attr(atr)vlo₧φ obsah zadanΘho atributux
content: open_quote (close_quote)vlo₧φ otevφrajφcφ/uzavφrajφcφ uvozovkux
quotes: seznam_uvozovekdefinice r∙zn²ch uvozovek pro zano°enΘ elementyx
Φφslovßnφvklßdßnφ Φφslovßnφ, vno°enΘ Φφslovßnφ,...x

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∙.

Vizußlnφ model

Spoustu mo₧nostφ p°ineslo CSS2 do vizußlnφho modelu. P°edevÜφm p°ibyly novΘ hodnoty pro st∞₧ejnφ vlastnost display. O t∞chto zm∞nßch se doΦtete ve Φlßnku CSS2 û vizußlnφ formßtovacφ model. Nynφ ji₧ k podpo°e t∞chto hodnot v Ope°e:

hodnota vlastnosti displaypodpora v Ope°e 7.22
run-inx
compactx
marker-
inline-tablex

DalÜφ novinkou je nastavenφ minimßlnφ, respektive maximßlnφ velikosti elementu:

vlastnostv²znampodpora v Ope°e 7.22
min-widthminimßlnφ Üφ°kax
min-heightminimßlnφ v²Ükax
max-widthmaximßlnφ Üφ°kax
max-heightmaximßlnφ v²Ükax

A koneΦn∞ takΘ norma CSS2 definovala novΘ vlastnosti pou₧itelnΘ pro dynamickΘ efekty vyvolanΘ n∞kter²m skriptovacφm jazykem:

vlastnostv²znampodpora v Ope°e 7.22
overflowchovßnφ elementu p°i p°eteΦenφx
clipnastavenφ zobrazovanΘ oblasti elementux
visibilityviditelnost obsahu elementux

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 scroll, auto vlastnosti overflow.

CSS2 a tabulky

Velk² pokrok v CSS2 takΘ zaznamenala podpora tabulek. V minulΘ kapitole jsme si ukßzali, ₧e Opera 7.22 podporuje hodnotu inline-table vlastnosti display, tedy vlo₧enφ tabulky jako °ßdkov² element. Zde je v²Φet dalÜφch vlastnostφ:

vlastnostv²znampodpora v Ope°e 7.22
caption-sideumφst∞nφ popisu tabulkyΦßsteΦn∞
text-align: "znak"zarovnßnφ obsahu bun∞k na urΦit² znak-
visibility: collapseschovßnφ Φßsti tabulky pou₧itelnΘ p°i dynamick²ch efektech-
table-layoutnastavenφ algoritmu vykreslovßnφ tabulkyx
border-collapsenastavenφ druhu okraje tabulkyx
border-spacingmezera mezi bu≥kamix
empty-cellschovßnφ okraje u bun∞k bez obsahux
border: hidden;zruÜenφ okraje u zhroucenΘho modelux

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.

Polohovßnφ

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 CSS2 û pozicovßnφ element∙. Nßsleduje poslednφ tabulka tohoto Φlßnku reprezentujφcφ podporu polohovacφch vlastnostφ v Ope°e:

vlastnostv²znampodpora v Ope°e 7.22
position: relativerelativnφ umφst∞nφ v∙Φi p∙vodnφ polozex
position: absoluteabsolutnφ urΦenφ pozicex
position: fixedelement z∙stßvß stßle na zadanΘ pozicix
floatnastavenφ elementu jako plovoucφhox
clearzakßzßnφ obtΘkßnφ elementux
z-indexz sou°adnice elementux

V Ope°e se tedy nebojte zobrazovat jakΘkoliv strßnky s CSS layoutem, m∞la by je zvlßdnout bez problΘm∙.

Opera a XML

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.

Nastavenφ posuvnφk∙

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 File|Preferences|Page style zaÜkrtnutφm mo₧nosti Enable styling of scrollbars.

ProblΘmy se zalomenφm

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 br, 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φ <br /> 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 Styles domovskΘho adresß°e Opery vlo₧te do souboru user.css nßsledujφcφ dva °ßdky:

br:before { content: inherit !important; }
br { display: block !important; height:0 !important; }

Nßsledn∞ se podφvejte do File|Preferences|Page style a v poli My style sheet zadejte cestu se jmΘnem editovanΘho souboru (pokud tam jeÜt∞ nenφ). Pak klikn∞te na tlaΦφtko Configure modes... a v nßsledujφcφm formulß°i zaÜkrtn∞te My style sheet pro oba m≤dy.

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.

Zßv∞r

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.

Dudek, Jan (26.11. 2003)