CSS2 - podpora kaskßdov²ch styl∙ v prohlφ₧eΦφch Opera a Firefox
Op∞t se vracφme k norm∞ CSS2, kterß znaΦn²m zp∙sobem rozÜi°uje mo₧nosti p∙vodnφch kaskßdov²ch styl∙. Tento Φlßnek dopl≥uje p°ehlednΘ informace o podporu CSS2 v nov²ch °adßch Opery a v prohlφ₧eΦi Firefox.
Je a₧ p°φznaΦnΘ, jak radikßln∞ se m∞nily po₧adavky na modernφ prohlφ₧eΦ v pr∙b∞hu rozvoje internetu. Zatφmco d°φve byla tato aplikace posuzovßna p°edevÜφm z hlediska podpory vlastnφch proprietßrnφch technologiφ a rozÜφ°enφ, v poslednφch letech je jasn∞ patrn² trend p°iklßdßnφ d∙razu na bezpeΦnost a podporu standard∙. A prßv∞ v tomto Φlßnku si shrneme situaci na poli podpory jednΘ z nejd∙le₧it∞jÜφch norem, druhΘ verze kaskßdov²ch styl∙, a doplnφme tak informace uvedenΘ v jednotliv²ch dφlech serißlu. Testovan²mi prohlφ₧eΦi jsou Opera 7.54, t°etφ betaverze velmi ambici≤znφ Opery 8 a Firefox 1.0.1.
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. VÜechny t°i prohlφ₧eΦe je zvlßdajφ bez problΘm∙:
selektor | syntaxe | v²znam | podpora v Ope°e 7.54 | podpora v Ope°e 8b3 | podpora ve Firefox 1.0.1 |
---|---|---|---|---|---|
univerzßlnφ selektor | * | vÜechny elementy | x | x | x |
typov² selektor | A | vÜechny elementy A | x | x | x |
selektor t°φdy | A.trida | vÜechny elementy A s atributem class="trida" | x | x | x |
ID selektor | A#mujid | element A s jedineΦn²m identifikßtorem id="mujid" | x | x | x |
selektor nßslednφka | A B | vÜechny elementy B, kterΘ jsou uvnit° elementu A | x | x | x |
selektor dφt∞te | A>B | vÜechny elementy B, kterΘ jsou dφt∞tem elementu A | x | x | x |
selektor p°φmΘho sourozence | A+B | vÜechny elementy B, kterΘ majφ stejnΘho rodiΦe jako A jsou v dokumentu hned za nφm | x | x | x |
atributovΘ selektory | A[atr] | vÜechny elementy A, kterΘ majφ nastaven² atribut atr na libovolnou hodnotu | x | x | x |
atributovΘ selektory | A[atr=hod] | vÜechny elementy A, kterΘ majφ nastaven² atribut atr na hodnotu hod | x | x | x |
atributovΘ selektory | A[atr~=hod] | vÜechny elementy A, jejich₧ atribut atr je tvo°en slovy odd∞len²mi mezerami a jedno slovo je rovno hod | x | x | x |
atributovΘ selektory | A[atr|=hod] | vÜechny elementy A, jejich₧ atribut atr zaΦφnß hod, pokraΦuje pomlΦkou a dalÜφmi znaky | x | x | x |
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-element | v²znam | podpora v Ope°e 7.54 | podpora v Ope°e 8b3 | podpora ve Firefox 1.0.1 |
---|---|---|---|---|
:link | nenavÜtφven² odkaz | x | x | x |
:visited | navÜtφven² odkaz | x | x | x |
:hover | nad elementem je kurzor | x | x | x |
:active | element je aktivovßn | x | x | x |
:focus | element je zam∞°en (focused) | ΦßsteΦn∞ | ΦßsteΦn∞ | x |
:lang(jazyk) | element je napsßn v danΘm jazyce | x | x | x |
:first-child | element je prvnφm dφt∞tem jinΘho elementu | x | x | x |
:first-letter | prvnφ pφsmeno elementu | x | x | x |
:first-line | prvnφ °ßdek elementu | x | x | x |
:before | mφsto p°ed elementem | x | x | x |
:after | mφsto za elementem | x | x | x |
I zde se testovanΘ prohlφ₧eΦe vyznamenaly. Jedin²m detailem je rozdφlnΘ p°edßvßnφ zam∞°enφ (focus) v Ope°e a Firefoxu. Firefox podporuje p°edßvßnφ zam∞°enφ (v OS Windows standardn∞ pomocφ klßvesy Tab) nad vÜemi aktivnφmi Φßstmi strßnky (odkazy a formulß°ovΘ prvky), zatφmco Opera p°edßvß focus pouze mezi prvky formulß°e. Proto u nφ nem∙₧ete poΦφtat se zv²razn∞nφm odkaz∙ pomocφ p°edßnφ zam∞°enφ.
VÜechny zmi≥ovanΘ prohlφ₧eΦe sprßvn∞ interpretujφ dynamickΘ pseudo-t°φdy :hover
a :active
a umo₧≥ujφ je aplikovat na libovolnΘ elementy, ne pouze na odkazy, jako je tomu u MSIE.
@pravidla
ZavinßΦovß pravidla 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:
@pravidlo | v²znam | podpora v Ope°e 7.54 | podpora v Ope°e 8b3 | podpora ve Firefox 1.0.1 |
---|---|---|---|---|
@import "styl.css"; | importuje styl.css | x | x | x |
@import "styl.css" media; | na za°φzenφ odpovφdajφcφ media importuje styl.css | x | x | x |
@media media {} | styl ve slo₧en²ch zßvorkßch bude aplikovßn pouze na danΘm za°φzenφ | x | x | x |
@font-face {} | definice novΘho fontu | - | - | - |
@page {} | nastavenφ tisknutelnΘ oblasti | x | x | - |
Importovßnφ i cφlenφ styl∙ zvlßdajφ vÜechny prohlφ₧eΦe bez problΘm∙, ani v jednom naopak nenφ podporovßna dynamickß definice font∙ pomocφ pravidla @font-face
.
Nastavenφ tisknutelnΘ oblasti a °φzenφ toku textu
Pomocφ vlastnostφ uveden²ch uvnit° pravidla @page
lze ovlivnit nastavenφ tisknutelnΘ oblasti. Prohlφ₧eΦe umo₧≥ujφ tato nastavenφ:
mo₧nost/vlastnost | v²znam | podpora v Ope°e 7.54 | podpora v Ope°e 8b3 | podpora ve Firefox 1.0.1 |
---|---|---|---|---|
margin-left, ... | okraje tisknutelnΘ oblasti | x | x | - |
size | velikost tisknutelnΘ oblasti, resp. orientace dokumentu | x | x | - |
strßnkovΘ pseudo-t°φdy :first, :left, :right | pseudo-t°φdy pro prßci s lev²mi, resp. prav²mi strßnkami a titulnφ strßnkou | ΦßsteΦn∞ | x | - |
@page jmeno_stranky {} | pojmenovanΘ strßnky | - | - | - |
page-break-before page-break-after | zalamovßnφ p°ed a za elementem | x | x | x |
page-break-inside | zalamovßnφ uvnit° elementu | x | x | - |
orphans, widows | min. poΦet °ßdk∙ na zaΦßtku/konci strßnky | x | x | - |
Operu provßzφ u₧ od ÜestΘ verze problΘmy s interpretacφ strßnkov²ch pseudot°φd. Testovanß sedmiΦkovß verze dokßzala sprßvn∞ interpretovat pseudot°φdy :left
a :right
a naopak ignorovala :first
. Pokud byla uvedena t°φda pro levou i pravou stranu, doÜlo ke zvlßÜtnφmu bugu, kdy pozd∞ji uvedenß pseudot°φda byla ·pln∞ ignorovßna (neÜlo tedy zßrove≥ nastavit levou i pravou strßnku).
Beta Opery 8 se pouΦila z p°edchozφch chyb a umo₧≥uje tΘm∞° veÜkerß nastavenφ pomocφ pravidla @page
a jejich p°φpadnΘ kombinace. Nezvlßdß, stejn∞ jako jejφ p°ech∙dkyn∞, pojmenovanΘ strßnky.
Firefox 1.0.1 zde ·pln∞ vyho°el, zdß se, ₧e pravidlo @page
v∙bec nepodporuje.
Generovan² obsah
Druhß verze kaskßdov²ch styl∙ nßm umo₧≥uje vklßdat do v²slednΘho dokumentu dalÜφ obsah, nap°φklad text, obsah atribut∙ nebo Φφslovßnφ, na zaΦßtek, respektive konec elementu pomocφ ji₧ 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 prohlφ₧eΦφch zjistφte z nßsledujφcφ tabulky:
vlastnost | v²znam | podpora v Ope°e 7.54 | podpora v Ope°e 8b3 | podpora ve Firefox 1.0.1 |
---|---|---|---|---|
content: "°et∞zec" | vlo₧φ °et∞zec na zaΦßtek/konec elementu | x | x | x |
content: url("jmeno_souboru") | vlo₧φ obsah zadanΘho souboru | x | x | x |
content: attr(atr) | vlo₧φ obsah zadanΘho atributu | x | x | x |
content: open_quote (close_quote) | vlo₧φ otevφrajφcφ/uzavφrajφcφ uvozovku | x | x | x |
quotes: seznam_uvozovek | definice r∙zn²ch uvozovek pro zano°enΘ elementy | x | x | - |
Φφslovßnφ | vklßdßnφ Φφslovßnφ, vno°enΘ Φφslovßnφ, ... | x | x | - |
V p°φpad∞ generovanΘho Φφslovßnφ nemßm k ob∞ma Operßm ₧ßdnΘ nßmitky. Bez problΘm∙ zvlßdajφ vklßdßnφ jakΘhokoli obsahu p°ed a za element a problΘmy jim ned∞lajφ ani uvozovky nebo Φφslovßnφ element∙. Naopak Firefox nezvlßdß r∙znΘ ·rovn∞ uvozovek a vklßdßnφ Φφslovßnφ.
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 ve sledovan²ch prohlφ₧eΦφch:
hodnota vlastnosti display | podpora v Ope°e 7.54 | podpora v Ope°e 8b3 | podpora ve Firefox 1.0.1 |
---|---|---|---|
run-in | x | x | - |
compact | x | x | - |
marker | - | - | - |
inline-table | x | x | - |
DalÜφ novinkou je nastavenφ minimßlnφ, respektive maximßlnφ velikosti elementu:
vlastnost | v²znam | podpora v Ope°e 7.54 | podpora v Ope°e 8b3 | podpora ve Firefox 1.0.1 |
---|---|---|---|---|
min-width | minimßlnφ Üφ°ka | x | x | x |
min-height | minimßlnφ v²Üka | x | x | x |
max-width | maximßlnφ Üφ°ka | x | x | x |
max-height | maximßlnφ v²Üka | x | x | x |
A koneΦn∞ takΘ norma CSS2 definovala novΘ vlastnosti pou₧itelnΘ pro dynamickΘ efekty vyvolanΘ n∞kter²m skriptovacφm jazykem:
vlastnost | v²znam | podpora v Ope°e 7.54 | podpora v Ope°e 8b3 | podpora ve Firefox 1.0.1 |
---|---|---|---|---|
overflow | chovßnφ elementu p°i p°eteΦenφ | x | x | x |
clip (dle CSS2.1) | nastavenφ zobrazovanΘ oblasti elementu | x | x | x |
visibility | viditelnost obsahu elementu | x | x | x |
V tΘto Φßsti pom∞rn∞ zklamal Firefox, kter² nezvlßdß ani jednu z nov²ch hodnot vlastnosti display
. Naopak ob∞ Opery zvlßdajφ a₧ na jedinou v²jimku vÜechna nastavenφ vizußlnφho modelu CSS2.
CSS2 a tabulky
Velk² pokrok v CSS2 takΘ zaznamenala podpora tabulek. V p°edchozφ Φßsti jsme si ukßzali, jak prohlφ₧eΦe podporujφ hodnotu inline-table
vlastnosti display
, tedy vlo₧enφ tabulky jako °ßdkov² element. Zde je v²Φet dalÜφch vlastnostφ:
vlastnost | v²znam | podpora v Ope°e 7.54 | podpora v Ope°e 8b3 | podpora ve Firefox 1.0.1 |
---|---|---|---|---|
caption-side | umφst∞nφ popisu tabulky | ΦßsteΦn∞ | ΦßsteΦn∞ | x |
text-align: "znak" | zarovnßnφ obsahu bun∞k na urΦit² znak | - | - | - |
visibility: collapse | schovßnφ Φßsti tabulky pou₧itelnΘ p°i dynamick²ch efektech | - | - | - |
table-layout | nastavenφ algoritmu vykreslovßnφ tabulky | x | x | x |
border-collapse | nastavenφ druhu okraje tabulky | x | x | x |
border-spacing | mezera mezi bu≥kami | x | x | x |
empty-cells | chovßnφ okraje u bun∞k bez obsahu | x | x | x |
border: hidden; | zruÜenφ okraje u zhroucenΘho modelu | x | x | x |
P°esto₧e podpora CSS2 v tΘto oblasti nenφ tak velkß jako v jin²ch oblastech, lze s klidn²m sv∞domφm °φci, ₧e vÜechny d∙le₧itΘ mo₧nosti druhΘ verze kaskßdov²ch styl∙ jsou implementovßny. VÜemi testovan²mi prohlφ₧eΦi je ignorovßno pouze zarovnßnφ na znak a specißlnφ hodnota collapse
vlastnosti visibility
, urΦenß pro dynamickΘ skr²vßnφ °ßdk∙. Opery majφ problΘm s umis¥ovßnφm popisu tabulky pomocφ vlastnosti caption-side
, zvlßdajφ pouze umφst∞nφ nad a pod tabulkou, ostatnφ vlastnosti pova₧ujφ za umφst∞nφ nad tabulkou. Poslednφ poznßmka se t²kß implicitnφ hodnoty vlastnosti empty-cells
, u Opery to je hide
, zatφmco u Firefoxu show
.
Polohovßnφ
Poslednφ skupina vlastnostφ umo₧≥uje umφs¥ovat elementy mimo normßlnφ tok dokumentu. Takto se dajφ vytvß°et takzvanΘ 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φ:
vlastnost | v²znam | podpora v Ope°e 7.54 | podpora v Ope°e 8b3 | podpora ve Firefox 1.0.1 |
---|---|---|---|---|
position: relative | relativnφ umφst∞nφ v∙Φi p∙vodnφ poloze | x | x | x |
position: absolute | absolutnφ urΦenφ pozice | x | x | x |
position: fixed | element z∙stßvß stßle na zadanΘ pozici | x | x | x |
float | nastavenφ elementu jako plovoucφho | x | x | x |
clear | zakßzßnφ obtΘkßnφ elementu | x | x | x |
z-index | z sou°adnice elementu | x | x | x |
Ve vÜech testovan²ch prohlφ₧eΦφch se tedy nebojte zobrazovat jakΘkoli strßnky s CSS layoutem, m∞ly by je zvlßdnout bez problΘm∙.
Formßtovßnφ XML
VÜechny t°i prohlφ₧eΦe dßle umo₧≥ujφ zobrazovat obecnΘ XML soubory. Pokud jim nep°i°adφte ₧ßdn² styl, budou v Ope°e vÜechny elementy vypsßny za sebou jako °ßdkovΘ elementy, p°esn∞ podle normy. Firefox naopak nabφdne obsah souboru podobn∞ jako MSIE ve form∞ stromovΘho v²pisu, a poznßmku, ₧e k souboru nebyl p°i°azen ₧ßdn² popis stylu. V opaΦnΘm p°φpad∞ bude dokument sprßvn∞ naformßtovßn podle danΘho stylu.
Nastavenφ posuvnφk∙
Microsoft Internet Explorer p°iÜel s mo₧nostφ nastavit pomocφ svΘho rozÜφ°enφ CSS barvu posuvnφk∙ (scrollbar∙). Opera tuto mo₧nost podporuje takΘ. Ale proto₧e jde o nestandardnφ rozÜφ°enφ, musφte to nejd°φve povolit. Provedete to p°es | Tools | Preferences | Page style | zaÜkrtnutφm mo₧nosti Enable styling of scrollbars. V osmΘ verzi Opery odpovφdajφcφ nabφdku najdete v | Tools | Preferences | Advanced |C ontent |. Firefox toto rozÜφ°enφ nepodporuje.
Souhrn
Pokud bychom hledali absolutnφho vφt∞ze tohoto testu prohlφ₧eΦ∙, stala by se jφm osmß verze Opery, kterß stavφ na v²born²ch v²sledcφch svΘ p°edchozφ verze. Firefox p°ekvapiv∞ v n∞kter²ch oblastech zaostßvß, neznßmou je pro n∞j nastavovßnφ oblasti tisku. P°esto lze i o n∞m °φci, ₧e podporuje vÜechny d∙le₧itΘ prvky CSS2 a ₧e jde o kvalitnφ prohlφ₧eΦ, zvlßÜt∞ ve srovnßnφ s Microsoft Internet Explorerem.
CSS2 - kaskßdovΘ styly druhΘ generace
Autor zde zmapoval nejnov∞jÜφch vlastnosti CSS2 a pustil se i na tenk² led jejich podpory r∙zn²mi prohlφ₧eΦi. ZvlßÜtnφ pozornost v∞noval mΘn∞ obvykl²m, mßlo rozÜφ°en²m a p°itom velmi u₧iteΦn²m vlastnostem CSS. Tato sΘrie Φlßnk∙ ji₧ byla uzav°ena, aΦkoli dalÜφ pokraΦovßnφ nelze vylouΦit.
- CSS2 - podpora kaskßdov²ch styl∙ v prohlφ₧eΦφch Opera a Firefox (prßv∞ Φtete)
- CSS2 - podpora kaskßdov²ch styl∙ v sedmiΦkovΘ °ad∞ Opery
- CSS2 - mluvenΘ styly
- CSS2 - pozicovßnφ element∙
- CSS2 - formßtovacφ mo₧nosti tabulek
- CSS2 - vizußlnφ formßtovacφ model
- CSS2 - automaticky generovan² obsah
- CSS2 - pravidlo strßnky
- CSS2 - at rules aneb pravidla zavinßΦe
- CSS2 - selektory, pseudot°φdy a pseudoelementy
- CSS2 - kaskßdovΘ styly podruhΘ