CSS2 – at rules aneb pravidla zavináče
At rules jsou speciální příkazy CSS2 (v následujícím textu je budu nazývat @pravidla). Dovolují použití určitého stylu na cíl, který není v XHTML definovatelný, nebo představují výkonné příkazy. Začínají znakem @, následovaným samotným identifikátorem pravidla. V CSS2 můžeme použít tato @pravidla: @import, @media, @font-face, @page.
Import stylu
V původním CSS se vyskytovalo pouze jediné @pravidlo, @import
, které přikazuje import stylu ze zadaného stylesheetu. Chceme-li např. použít stylesheet styl.css, můžeme ho importovat takto: @import url("styl.css");
nebo nám CSS2 povoluje i kratší variantu @import "styl.css";
.
Při použití tohoto pravidla je důležité si uvědomit, že musí být uvedeno jako úplně první před jakýmikoliv jinými definicemi nebo @pravidly. Například v následujícím zápise bude druhé @import
pravidlo ignorováno. Importován tedy bude pouze stylesheet styl1.css:
@import „styl1.css“;
p {color: red;}
@import „styl2.css“;
Podobně v tomto případě nedojde k vůbec žádnému importu!
p {color: red;}
@import „styl2.css“;
@pravidlo @import
se dnes využívá především pro odříznutí starých verzí prohlížečů od stylesheetu (hlavně proklínaného NN 4.x), se kterým neumí správně pracovat. Zmiňované prohlížeče totiž tomuto @pravidlu nerozumí, a proto stránka na nich zůstane stylem nedotčena. Respektive můžeme také nadefinovat jeden stylesheet pro novější prohlížeče a druhý pro staré verze. Uděláme to následujícím způsobem:
<head>
…
<link href=“old.css“ rel=“stylesheet“ type=“text/css“ />
<style type=“text/css“>
@import „new.css“;
</style>
…
</head>
<body>
…
</body>
V příkladu používám dva stylesheety, old.css pro staré prohlížeče a new.css pro zbytek. Nejdříve pomocí elementu link
přiřadím dokumentu styl old.css. Tomuto zápisu rozumí všechny prohlížeče včetně těch nejstarších (pokud CSS podporují). Následně použiji @pravidlo @import
pro import stylesheetu new.css. Tomuto pravidlu ovšem staré prohlížeče nerozumí, a proto zůstanou u původního old.css. Nové prohlížeče díky kaskádovým pravidlům použijí definice z new.css. Takto lze velmi efektivně dosáhnout kompatibility i s prarodiči dnešních prohlížečů.
Styly vázané na médium
Možná jste někdy potřebovali upravit výstup například na tiskárnu. Asi jste museli udělat zvláštní stránku s jiným formátováním. Pomocí CSS2 stylů vázaných na médium však můžete definovat jedné stránce různé styly, které budou použity v závislosti na tom, kde je zrovna stránka „zobrazena“, jestli na monitoru nebo na tiskárně. Pro tyto účely bylo navrženo nové @pravidlo @media třída_média
. Nejdříve si vyjmenujme třídy médií dle CSS2:
třída média | popis |
---|---|
all | všechna zařízení |
screen | monitor počítače |
tiskárna | |
handheld | malá obrazovka s limitovaným počtem barev |
tv | zařízení televizního typu |
tty | terminály (zařízení s fixní zobrazovací mřížkou) |
projection | prezentace pro projekci |
aural | syntezátory hlasu |
braille, embossed | zařízení s výstupem v braillově písmu |
Kompletní popis tříd médií můžete najít na stránce W3C. Momentálně asi největší uplatnění najdou třídy screen
a print
. Pomocí @pravidla @media
jim příslušné stylové vlastnosti nadefinujeme následujícím způsobem.
@media screen {
/* stylové vlastnosti pro monitory */
}
@media print {
/* stylové vlastnosti pro tisk */
}
Tedy nejprve určíme, pro jaké zařízení chceme styl použít pomocí @media třída_zařízení
, a následně do složených závorek napíšeme samotný styl. Pokud chceme přiřadit jeden styl více médiím, jednoduše za @media
uvedeme seznam tříd oddělených čárkami @media print, screen {}
. Můžeme třeba chtít, aby stránka na monitoru měla na pozadí obrázek back.gif a bílé písmo a naopak na tiskárně písmo černé a bez pozadí. Pomocí tohoto @pravidla je to snadné:
@media screen {
body
{color white;
background-image: url(„back.gif“);}
}
@media print {
body
{color: black;
background-image: none;}
}
Problém může nastat, pokud chceme importovat stylesheet pomocí @pravidla @import
. Na první pohled se nabízí následující řešení:
@media screen {
@import „screen.css“
}
@media print {
@import „print.css“
}
Takto zapsaný kód je ale chybný! Jak jsem se zmínil, @import
musí být uvedeno úplně jako první před jinými @pravidly nebo vlastnostmi. Proto k importu nedojde. Naštěstí nám CSS2 umožňuje docílit toho jinak. Za @pravidlo @import
lze uvést třídu zařízení, pro kterou se má daný styl načíst:
@import „screen.css“ screen;
@import „print.css“ print;
Důležité je uvědomit si, že tento zápis snižuje množství přenášených dat, neboť stažen bude pouze stylesheet, který právě potřebujeme. Přiřadit styl určitému médiu můžeme i na úrovni XHTML v elementech style
a link
. Slouží k tomu nový atribut media
, jehož hodnotu tvoří seznam tříd médií oddělených čárkami:
…
<link href=“print.css“ media=“print“ rel=“stylesheet“ type=“text/css“ />
…
<style media=“print, screen“ type=“text/css“>
/* styl pro tiskárnu a monitor */
</style>
Přiřazovat styly médiím už na úrovni XHTML ale nedoporučuji. Pokud prohlížeč nerozumí nějakému atributu, tak jej ignoruje. Což v tomto případě znamená, že starší prohlížeče sice nebudou rozumět atributu media
, ale přesto daný styl použijí! Proto je lepší přiřazovat styly médiím pouze pomocí @pravidel.
Pravidlo stránky
Dalším @pravidlem v CSS2 je @page
a reprezentuje tisknutelnou oblast stránkových médií (tiskárny). Vše o tomto @pravidlu stejně jako o stránkových médiích se dočtete v příštím článku.
Podpora v prohlížečích
IE6 | Opera 6.05 | Mozilla 1.1 | |
---|---|---|---|
@import | x | x | x |
@media (testováno na tiskárně) | x | x | x |
@page | x |
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
-
Zabezpečení e-mailů: Jak můžete chránit vaši firemní komunikaci
13. prosince 2023 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 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