Naprostá většina dnešních webových stránek je upravována pomocí tabulek. Obzvláště dobře se jimi dělá sloupcová úprava, která usnadňuje čtení. Tabulky mají ale jednu základní nevýhodu -- zobrazují se až poté, co se celé načtou. Čtenář pak kouká věčnost na prázdnou stránku. Nebylo by lepší načíst text, zobrazit ho a teprve potom načítat odkazy v okolních sloupečcích? To umožňuje CSS pozicování.
Nejčastější pojetí tabulkové úpravy je toto:
Hlavička |
||
Levý sloupecObsahuje zpravidla hodně odkazů |
ObsahObsah stránky, vlastní text, který je důležitý. Jedním z největších problémů je proměnlivá výška tohoto hlavního textu. |
Pravý sloupec |
Patička |
Někdy stránka nemá pravý sloupec nebo patičku, časté variace se týkají rohů stránek, to mě ale nyní nezajímá. Tabulkově to popisuji jinde. V dalším textu ukážu, jak této úpravy stránky dosáhnout pomocí CSS pozicování.
Každý návrh stránkové úpravy by měl začínat nákresem s rozměry. Dejme tomu, že stránku chci ladit pro šířku obrazovky 800 pixelů, takže bych neměl překročit 760 pixelů šířky (něco sežerou okraje a lišty). Vymyslím si i další rozměry pro různé části stránky:
Výška 120 pixelů; x=0, y=0 | ||
šířka 150 px, výška libovolná x=0, y=120 |
šířka 500 pixelů, výška podle obsahu x=150, y=120 |
šířka 110 px
x=650 |
šířka 500, umístění podle obsahu obsahu |
Tag <div> se někdy nazývá oddíl. V pozicování se používá ke uzavření obsahu, který má být absolutně pozicován. Je to jistější než jiné tagy, protože to pak správně zobrazí i Internet Explorer 4 a NN 4.
Například tento HTML kód:
<div style="position: absolute; top: 120px, left: 150px>Obsah</div>
se zobrazí jako slovo "Obsah", které bude začínat 120 pixelů pod a 150 pixelů vlevo od horního levého rohu stránky. Top je souřadnice y (v obráceném směru), left je x. Podrobnosti v popisu pozicování.
Každá část stránky (tj. hlavička, obsah, sloupce, patička) se zapíšou jako jeden <div>, kterému se předepíše absolutní poloha, šířka a někdy výška.
<div style="position: absolute; width: 500px; top: 120px; left:
150px">Obsah s jakkoli divokým kódem a s patičkou</div>
<div style="position:
absolute; width: 760px; top: 0px; height: 120px; left: 0px">Hlavička</div>
<div style="position:
absolute; width: 150px; top: 120px; left: 0px">Levý sloupec</div>
<div style="position:
absolute; width: 110; top: 120px ; left: 650px">Pravý
sloupec</div>
Hlavně si, prosím, všimněte, že můžu oddíly do kódu umístit v libovolném pořadí. Načítají se od prvního, nejlépe je tedy umístit dopředu obsah.
Hezčí než zápis absolutní polohy do kódu je vytvořit si ve hlavičce souboru stylopis:
<style>
#obsah {position: absolute; width: 500px; top: 120px; left: 150px}
#hlavicka {position: absolute; width: 760px; height: 120px; top: 0px;
left: 0px}
#levy {position: absolute; width: 150px; top: 120px; left: 0px}
#pravy{position: absolute; width: 110px; top: 120px; left: 650px}
</style>
a jednotlivým oddílům textu přiřadit identifikátory:
<div id="obsah">Obsah s jakkoli divokým kódem a s patičkou</div>
<div id="hlavicka">Hlavička</div>
<div id="levy">Levý
sloupec</div>
<div id="pravy">Pravý
sloupec</div>
Můžete si zobrazit příklad, který zhruba odpovídá popisovaným kódům.
Je potřeba pečlivě kontrolovat, aby obsah oddílů nebyl příliš široký (levý sloupec) nebo vysoký (hlavička), protože by pak došlo k překryvu. Většinou takové problémy ale nejsou, protože levý sloupec se zalamuje a hlavička bývá pečlivě odladěná. Přinejhorším lze změnit rozměrové řešení oddílů. Překrývání se dá kdyžtak řešit CSS vlastnostmi z-index, clip a rect.
Sloupce se dají různě formátovat; nejzajímavější je asi jejich barvení. Jde přitom o barvu pozadí, textu a o barvy odkazů. Samozřejmě použiji CSS styly. Proberu na příkladu levého sloupce.
<style>
#levy {background-color: green; color: white}
#levy H3 {color: black}
#levy a:link {color: yellow}
#levy a:visited {color: silver}
#levy a:hover {color: red}
</style>
V příkladu jsem nadefinoval barvu celého oddílu "levy", barvu nadpisu H3 a barvy odkazů uvnitř tohoto oddílu. Konkrétně se barvy samozřejmě musejí odladit tak, aby design seděl.
Podrobněji popisuji barvení oddílů u příkladu s lištou.
Největším problémem je udělat boční sloupce podbarvené (background-color) nejen pod jejich obsahem, ale po celé výšce stránky. To se jednoduše udělat nedá, protože zpravidla není známo, jak vysoký bude prostřední oddíl s textem.
Levý sloupec podbarvený až tam, kam má obsah | Obsah stránky
|
Pravý sloupec podbarvený |
Pod obsahem je bezbarvý prostor. | taky bezbarvo |
Jsou jen některá částečná řešení:
CSS pozicování nefunguje v trojkových verzích prohlížečů, které dnes ale používají (podle mých výzkumů) necelá dvě procenta čtenářů (a to si ještě myslím, že jsou to experimentující webmasteři). Pokud chcete, aby se i jim stránka zobrazila ve sloupcích, musíte udělat alternativní tabulkovou verzi a skriptem na ni navigovat. Lepší je ale vykašlat se na ně. Ono je to totiž pro ně také čitelné, třebaže ne tak hezky.
Vizte též: popis CSS pozicování, příklad CSS sloupců, hlavní stránka CSS, Jak udělat levé menu
Taky si, prosím, všimněte, jak jsou dělané tyto stránky.
Obsah
Hledání
Základní kurs
Editory
HTML tipy
Provoz webu
CSS styly
Jak psát web:
http://dusan.pc-slany.cz/internet/
Píše Yuhů: autorova stránka, mail: dusan@pc-slany.cz
Poslední aktualizace 28.11.2001