Grafika publishing webtip.cz grafika.cz mujiPod.cz mujmac.cz fotografovani.cz printing.cz builder.cz galerie
webtip.cz
adresář  | práce  | diskuse  | redakce  | inzerce
 
 


  Málo známá vlastnost HTML: vícenásobné třídy CSS
o autorovi 
poslat mailem 
tisknout článek 
aktuální rubrika 
HTML má jeden celkem málo známý, ale velmi užitečný způsob práce s třídami, který může usnadnit tvorbu vzhledu stránek a především umožňuje jednoduché změny vzhledu celého webu.

Staníček Petr - 18.02.2002 - clanek - Rubrika: HTML

Jak je známo, třídy CSS umožňují definovat společné vlastnosti mnoha objektům na stránce současně. V definici CSS se nadefinují vlastnosti pro třídu (pomocí selektoru s tečkou):

.modrytext { color:blue }

Objektům v HTML dokumentu se potom může přiřadit příslušná třída pomocí atributu class a pro každý objekt stejné třídy se pak použijí vlastnosti pro tuto třídu definované:

<DIV class="modrytext">...
<P class="modrytext">...

To je vcelku známé a nejrozšířenější použití tříd v HTML.


Již méně známé (a také zřídka používané) je, že hodnotou atributu class v HTML značce nemusí být pouze jméno třídy. Specifikace HTML 4 totiž umožňuje, aby hodnotou atributu class byl také seznam tříd. V praxi to znamená, že každý objekt na stránce může být hned v několika třídách současně. V takovém případě pak přebírá všechny vlastnosti definované pro všechny třídy, do nichž patří. Pokud dvě třídy definují odlišně stejnou vlastnost, přednost má později uvedená třída (priorita zleva doprava).

Syntaxe a příklad:

<PRVEK class="trida1 trida2 ... tridaN" ...>

např.:
<DIV class="velky modry vpravo">

K čemu je to dobré?

Výhodné použití je nasnadě. Často se odlišují některé prvky stránek pouze detaily (jiná barva písma, jiné pozadí). Na menších webech je obyvklé definovat pro podobné prvky jednu třídu, v níž se definují společné vlastnosti, a odlišnosti se pak "doladí" pomocí konkrétních definic pomocí ID. Např.:

.nadpis { margin: 0 1ex; font-family: sans-serif; }
#nadpis1 { color:red }
#nadpis2 { color:blue }
...
<H1 id="nadpis1" class="nadpis">...

Na větších webech je však již množství různých skupin podobných prvků velké a proto zde pak stoupá množství potřebných tříd. Jakékoli změny vzhledu webu jsou pak velmi složité.

S použitím násobných tříd si ale můžeme z celého webu udělat jednu velkou skládačku. Můžeme si například definovat sady jednoduchých tříd definujících barvu textu, další pro barvy pozadí, pro rámečky atd. Jednotlivým prvkům pak přiřadíme potřebné třídy:

.zakladnitext { color:#0069CC }
.vedlejsitext { color:#DD3612 }
.textodkazu { color:#DDC800 }
.negativnitext { color:white }

.pozadiclanku { background:#0069FF }
.pozadimenu { background:#DD3612 }
.zakladnipozadi { background:#FFFF00 }
.negativnipozadi { background:#333300 }

...

<P class="zakladnitext zakladnipozadi">...
<P class="negativnitext negativnipozadi">...
...

S takto definovanými třídami je hračkou například upravit barvy na celém webu najednou - změníme pouze hodnotu barvy v příslušné třídě a změna jediné barvy se projeví všude na webu, kde je tato třída použita.

Ještě výhodnější je pak používat tyto jednoduché třídy v kombinaci s podrobněji definovanými vlastnostmi tříd a objektů. Chceme mít například určitou sadu stránek v zeleném odstínu, jinou v modrém. Základní barva se použije pro pozadí záhlaví, barvu nadpisů, barvu odkazů a pro použité rámečky. Vzhled těchto stránek bude v zásadě stejný, budou se lišit pouze barevností - budeme proto definovat všechny základní vlastnosti pro jednotlivé prvky stránek tak, jak jsme zvyklí, ale pouze jednou, společně pro všechny stránky; vlastnosti týkající se barev však vynecháme a definujeme je samostatně. V atributu class je potom sloučíme:

// spolecny soubor CSS:


.zahlavi { margin:...; padding:....; font:...; }
H1.hlavni { margin:...; font:...; }


.green { color:green }
.blue { color:blue }
.bggreen { background:green }
.bgblue { background:blue }


//... na jedne strance pak pouzijeme:


<DIV class="zahlavi bggreen">...
<H1 class="hlavni green">....

//... a na jine strance:

<DIV class="zahlavi bgblue">...
<H1 class="hlavni blue">...

Výhodou tohoto řešení je především snadné "přebarvení" celého webu jediným zásahem do CSS: pokud budeme chtít např. změnit odstín použité zelené barvy, pouze předefinujeme hodnoty v třídách "green" a "bggreen" a nemusíme již procházet všechny definice CSS a hledat, kde všude se tato barva používá. Do HTML souborů pak nemusíme zasahovat vůbec.

A naopak, stejně tak snadno změníme vzhled celé stránky na jinou barvu, pokud v HTML zaměníme všechny třídy "green" za např. "orange" a "bggreen" za "bgorange". Zde pro změnu vůbec nemusíme zasahovat do CSS (pokud zde máme "orange" a "bgorange" již definováno).


Dalším celkem příjemným použitím je také náhrada oblíbených, ale v HTML 4 již zakázaných či nedoporučovaných atributů. Snadno tak vhodně nadefinovaným globálním CSS souborem dosáhneme takřka shodného zápisu jako ve starých verzích HTML:

 // Příklad zakázaných/nedoporučených atributů:

<P align="justify">
<TD valign="middle">
<IMG border="1" ...>
<P clear="all">

 // Náhrada pomocí tříd CSS:

.left { text-align:left }
.right { text-align:right }
.justify { text-align:justify }
.center { text-align:center }
.middle { vertical-align:middle }
.rfloat { float:right }
.clear { clear:both }
.border1black { border: 1px solid black }

...

<P class="clear justify">
<TD class="center middle">
<IMG class="rfloat border1black" ...>
atd...

Možností použití je nepřeberně, možná nemálo z nás hned napadne, jak tento způsob práce s třídami použít třeba právě na svém webu. Je pochopitelně jen otázkou vkusu a konkrétního řešení, jaká strategie definování CSS bude zrovna vhodnější. Je však dobré znát i tuto možnost a vědět, že ji máme kdykoli k dispozici. S širším výběrem možných řešení je pak každý návrh nového webu snazší.

Staníček Petr


Hodnocení článku: -1- -2- -3- -4- -5-  Aktuální hodnocení: 2.77 (5438)

Relevantní články
Žádné články


Příspěvky do diskuse o aktuálním článku
Petr Pechacek18.02.12:41 ...
Petr Pechacek18.02.13:01RE: ... - spatny titulek
Pavel Simek18.02.16:13RE: ...
Petr Staníček18.02.17:11RE: RE: ...
Pavel Simek18.02.17:32RE: RE: RE: ...
Adam Hauner18.02.9:30Podpora?
Petr Staníček19.02.8:46RE: Podpora?
Pavel Simek19.02.10:07RE: RE: Podpora?
Petr Staníček19.02.11:18RE: RE: RE: Podpora?
Pavel Simek19.02.12:01RE: RE: RE: RE: Podpora?
Pavel Simek19.02.12:33RE: RE: RE: RE: Podpora?
Scorpi19.02.14:50nevim nevim
  

 

  O vydavateli | Kontakt | Ceník reklamy | Ochrana osobních dat
©2002 Grafika Publishing. Všechna práva vyhrazena!