HTML v příkladech

12

Vlastnosti v kaskádových stylech

 
Obsah

Rejstřík

Hledat

Dopis autorovi

...příklad pro dvanáctou část...
vznikl kombinací dvou prvků: zdrojového textukaskádového stylu

V předchozím díle jsme se zabývali obecnými mechanismy kaskádových stylů, které umožňují ovlivňovat vzhled vašich stránek. Dnes budeme v procházce po CSS pokračovat. Čekají nás vlastnosti, které má autor k dispozici a které do značné míry vymezují vyjadřovací schopnosti kaskádových stylů.

Kompletní sortiment vlastností čítá kolem padesáti kousků. Proto si dovolíme jisté zjednodušení a zatajíme ty, které nepovažujeme za příliš zajímavé. I tak budou k jejich popisu potřeba dva díly seriálu.

Písmo

Jedna z prvních věcí, kterou každý autor zatouží používat, je vyznačování částí textu pomocí vhodného písma. V CSS můžete nastavit celou řadu parametrů.

Tím nejzákladnějším je font-family, určující rodinu (tedy jakýsi recept na základní tvar) písma. Hodnotou může být čárkami oddělovaný seznam názvů. Klient použije první, který má k dispozici. Jako poslední v seznamu vždy uveďte jedno z obecných jmen podle tabulky 1. Ta vyjadřují základní charakteristiku písma a lze očekávat, že každý grafický klient bude mít vždy alespoň jedno vyhovující písmo k dispozici. Pokud totiž klient nenajde písmo, které by vyhovovalo vašemu zadání, může se chovat dosti podivně. Doporučujeme také vyhýbat se hodnotám cursive a fantasy. Jsou určeny pro ozdobná písma a výsledek je jen těžko předvídatelný.

Tabulka 1: Obecné názvy písem
serif antikva (serifové písmo)
sans-serif grotesk (bezserifové písmo)
cursive kurzívní písmo
fantasy ozdobné písmo
monospace neproporcionální písmo (psací stroj)

Dalšími vlastnostmi pak můžete ovlivnit charakter písma v rámci dané rodiny. font-style umožňuje nastavit normální vzpřímené písmo (normal), kurzívu (italic) či písmo skloněné (oblique). Pomocí font-weight si můžete poručit duktus (čili tloušťku) písma. Nabízí celou řadu přípustných hodnot. Nejpraktičtější jsou normal a bold, které vytvoří normální a tučné písmo. Můžete také pomocí bolder požadovat, aby písmo bylo o něco tučnější, než momentálně je. Pravého opaku dosáhnete hodnotou lighter.

font-size nastaví stupeň (velikost) písma. Základní možností je nastavit určitý konkrétní rozměr (např. 10pt). To je však poněkud problematické, protože neznáte implicitní nastavení klienta. Může se stát, že písmo, které jste si představovali jako velké, vyzní v porovnání se standardním písmem klienta jako vyslovený mrňous. Můžete sáhnout po symbolických hodnotách xx-small, x-small, small, medium, large, x-large a xx-large. Ty by klient měl přizpůsobit své konfiguraci a tudíž se snad nedočkáte nepříjemného překvapení. Lze též požadovat zmenšení (smaller) či zvětšení (larger) aktuálního stupně.

Jako alternativu k některým skupinám vlastností nabízí kaskádové styly jakési kolektivní vlastnosti. V nich můžete pod jednou střechou nastavit to, k čemu byste jinak potřebovali několik různých vlastností. V případě práce s písmem je takovým kolektivistou vlastnost font. Její hodnotu můžete smíchat z hodnot ostatních vlastností písma, oddělovaných navzájem mezerami.

Řekněme, že pro nadpis stránky chcete použít velmi velké tučné písmo, nejraději Gill, pokud nebude k dispozici spokojíte se s písmem Helvetica, případně libovolným bezserifovým písmem. Můžete nastavit buď sadu vlastností

H1 { font-family: Gill, Helvetica, sans-serif;
     font-weight: bold;
     font-size:   xx-large }
nebo jednu integrující
H1 { font: bold xx-large Gill, Helvetica, sans-serif }
Faktem je, že s Netscape Communicatorem jsem měl při použití vlastnosti font jisté problémy. Zatímco na nastavení rodiny prostřednictvím font-family reagoval normálně, stejnou hodnotu v rámci font ignoroval.

Vlastnosti textu

Jestliže v předchozí skupině značek jsme se zabývali otázkami písma, zde se podíváme na některé možnosti pro uspořádání textu. Asi nejčastěji využívanou vlastností z této oblasti bude text-align, která řídí zarovnání textu. Nabízí se čtyři přípustné hodnoty: left (na prapor vlevo), right (na prapor vpravo), center (na středovou osu) a justify (do bloku, čili se zarovnaným pravým okrajem). Dovolíme si nedoporučit používání justify. Klient zpravidla nebude mít k dispozici dostatek manipulačního prostoru, aby dokázal vždy a všude najít vhodná místa pro konce řádků. Důsledkem pak budou nechutně roztažené řádky, které až příliš často všichni potkáváme v denním tisku a časopisech.

Pokud se týče zarovnání ve směru svislém, máme k dispozici vlastnost vertical-align. Kromě obvyklých hodnot top, middle a bottom, jejichž protějšky důvěrně známe z atributu ALT značky <IMG>, nabízí několik dalších. Zajímavé jsou především sub a super, které umístí daný prvek jako dolní (respektive horní) index. Implicitní hodnotou svislého zarovnání je baseline, kdy jsou proti sobě postavena účaří prvku a jeho okolí. Jako hodnotu vertical-align můžete také zadat počet procent. Tento údaj je interpretován jako počet procent z výšky řádku, o něž má být prvek posunut nad účaří. Pokud tedy některé části textu přiřadíte vlastnost

vertical-align: -10%
bude posunut o desetinu výšky řádku směrem dolů.

Atraktivní název text-decoration skrývá vlastnost nanejvýš nebezpečnou. Jejím prostřednictvím lze realizovat všechny ty kousky, kterým by se slušný člověk měl vyhnout. Implicitní hodnotou je naštěstí normal (tedy text bez přídavků). Dále vám tato vlastnost umožňuje udělat čáru nad textem (overline), pod ním (underline) a přímo přes písmena (line-through). K dispozici je i široce opovrhované blikání (blink).

Pomocí text-transform můžete zasahovat nejen do vnějšího vzhledu určitého textu, ale přímo do textu samotného. Hodnota uppercase jej převede na verzálky (velká písmena), lowercase naopak na minusky (malá písmena). Nejinteligentnější chování vykazuje hodnota capitalize, díky níž bude první písmeno každého slova převedeno na verzálku. U nás takové chování nenajde příliš velké uplatnění, nicméně v anglicky hovořících zemích bývá občas zvykem psát tímto způsobem nadpisy. Z přiloženého příkladu je vidět, že při kombinaci akcentovaných znaků s transformacemi textu lze očekávat nedokonalosti, místy až problémy.

text-indent řídí odsazení prvního řádku odstavce. Hodnotou může být buď absolutní rozměr nebo počet procent z aktuální šířky řádku. Pro zadávání rozměrů máte k dispozici řadu různých jednotek - viz tabulka 2. Některé jsou relativní a závisí na momentálně nastaveném písmu. Jiné set váří absolutně, to je však třeba chápat s rezervou. Váš WWW klient jistě nebude schopen rozpoznat, kolik bodů obrazovky představuje 1cm. Hodnotu může nanejvýš odhadnout, protože závisí na velikosti vašeho monitoru, jeho nastavení a rozlišení grafické karty.

Tabulka 1: Jednotky pro uvádění rozměrů
px obrazovkový bod
em stupeň aktuálního písma; pokud je právě aktivní písmo o stupni 10 bodů, platí 1em = 10pt
ex zhruba odpovídá výšce malého písmene "x"
in palec (1in = 2.54cm)
cm centimetr
mm milimetr
pt typografický bod (72pt = 1in)
pc pica (1pc = 12pt)

Při zápisu rozměrů se nedělá mezera mezi číslem a jednotkou. Číslo samozřejmě může mít znaménko. Na řadě míst jsou totiž povoleny i záporné rozměry (např. pro okraje).

Vlastností line-height ovlivníte výšku řádku. Je dost důležitá, protože má vliv na uspořádání ve svislém směru. Základní chování klienta při zpracování jednoho prvku řádku (např. vymezeného značkou) vypadá následovně: Klient spočítá velikosti písmen a určí, kolik bodů nad a pod účaří sahá text. Je-li součet těchto dvou údajů menší, než požadovaná výška (hodnota line-height), rozdělí zbylé místo rovným dílem a přidá mezery této velikosti nad a pod text, aby celková výška odpovídala požadavku.

Poté si klient poskládá vedle sebe všechny prvky, tvořící aktuální řádek. Zjistí, který z nich dosahuje nejvýše a který nejníže. Nemusí se jednat o jeden a tentýž prvek - některý mohl být například posunut pomocí vertical-align. Z těchto údajů zjistí celkovou výšku řádku a vytvoří z něj blok. Ten pak bude přiložen "na doraz" k podobně vzniklým blokům řádků nad ním a pod ním.

Hodnotou line-height může být konkrétní rozměr (např. 14pt), ale také ji lze zadat relativně vůči aktuálnímu stupni písma. Můžete to udělat procentem (např. 140%) nebo celým reálným číslem, které je chápáno jako násobek stupně písma (ekvivalentem 140% je tedy 1.4). Pokud má aktuální písmo stupeň 10pt, povedou všechny zmiňované hodnoty ke stejné výšce řádku: 14pt.

Barva

Další skupina vlastností ovlivňuje barvu a podklad textu. Jejím nejdůležitějším členem je vlastnost color, definující barvu textu. Hodnotou je specifikace barvy, která může mít v CSS několik podob. Asi nejpoužívanější bude klasická kombinace šesti číslic v šestnáctkové soustavě, předcházených znakem #. Jednotlivé dvojice číslic přitom vyjadřují intenzitu červené, zelené a modré složky barvy. Například tmavě modrý text na stránce byste vyrobili pravidlem
BODY { color: #000033 }
Stejným způsobem se barevné hodnoty zadávají v atributech některých značek HTML. Kaskádové styly nabízejí ještě čtyři další možnosti. Z nich však zřejmě jediným alespoň trochu používaným bude zadávání jménem, které může být pro základní barvy pohodlnější a srozumitelnější (např. red).

background-color analogickým způsobem určuje barvu pozadí. Chcete-li pod text umístit obrázek, použijte vlastnost background-image. Její hodnotou je lokátor souboru s obrázkem. Podle syntaktických pravidel CSS je vlastní lokátor obalen konstrukcí url(...). Vlastnost background-color se uplatní, pokud chybí background-image nebo ukazuje na obrázek, který se klientovi z nějakých důvodů nepodařilo získat. Jinak dostane přednost obrázek.

Několik dalších vlastností umožňuje řídit pozici a způsob opakování obrázku. Opět je k dispozici souhrnná vlastnost background, jejíž hodnotu můžete zkombinovat z ostatních. Například

BODY { background: url(/gifs/blok.gif) #CCFFFF }
požaduje pro pozadí stránky obrázek blok.gif. Pokud jej klient nedokáže získat, obarví pozadí světle azurovou barvou.

Poznamenejme, že Microsoft Internet Explorer verze 3 nerozpoznává dílčí vlastnosti, ale pouze souhrnnou background. Navíc musí být definována přímo na stránce. Pokud je vložena z externího souboru, klient na ni nereaguje.


Článek byl otištěn v časopise
Softwarové noviny číslo 7/97

 
<--- --->