Obsah lekce:
V této lekci vytvoříme sadu CSS pravidel, které vytvoří základní layout (rozmístění prvků) stránky. Využijeme k tomu html značky div, pomocí kterých nadefinujeme blokové elementy pro základní prvky stránky (na stránkách http://layouts.ironmyers.com/ nebo na http://blog.html.it/layoutgala/ lze nalézt mnoho typů CSS layoutů stránky).
My vytvoříme jeden z nejpoužívanějších layoutů, který obsahuje hlavičku stránky (banner), levé menu, místo pro obsah (content) vpravo od menu a patičku stránky (footer).
Zamysleme se nejprve nad tím, jakou velikost v pixelech budou jednotlivé prvky stránky mít.
Nejprve vytvoříme prázdnou html stránku pouze s hlavičkou. Tu si uložíme do složky jako soubor index.html. Ve složce s html souborem vytvoříme složku s názvem css, ve které vytvoříme soubor s názvem styly.css.
V aplikaci Adobe Dreamweaver (v případě, že jej nemáme k dispozici, tak stačí použít libovolný jiný textový editor jako např. pspad) vytvoříme nový prázdný css soubor v kódování utf-8 (Soubor -> Nový) jako na následujícím obrázku.
Obsahem nově vytvořeného css souboru jsou pouze dva řádky. První z nich je informace o kódování css souboru. Druhou informací je pouze komentář, který obsahuje informaci o tom, že se jedná o css dokument.
@charset "utf-8"; /* CSS Document */
Soubor styly.css uložíme do naší složky css. Jako další krok vytvoříme soubor index.html jako nový prázdný soubor typu html. V Adobe Dreamweaveru zvolíme Soubor -> Nový. Ve zobrazeném okně ještě k html souboru připojíme css soubor (pravý dolní roh okna viz následující obrázek).
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <link href="file:///C|/wamp/www/web/css/styly.css" rel="stylesheet" type="text/css" /> </head> <body> </body> </html>
První řádek informuje prohlížeč o použitém typu značení v dokumentu, atribut meta informuje prohlížeč o použitém kódování, UTF-8 se standardně používá díky plné kompatibilitě s českým jazykem.
Všimněme si, že vložený kaskádový styl obsahuje absolutní cestu k souboru v rámci systému Windows na lokálním počítači. Cesta se změní na správnou relativní v momentě, kdy soubor uložíme do kořenovéh adresáře našeho webu (Soubor -> Uložit). Hlavička se pak změní takto:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <link href="css/styly.css" rel="stylesheet" type="text/css" /> </head> <body> </body> </html>
Nikdy bychom neměli používat absolutní cesty, protože takový web nelze přesunout jako celek na jiný počítač, nebo do jiné složky. Těmito kroky máme hotovo vše podstatné proto, abychom mohli začít vytvářet náš web.
K vytvoření elementů webu použijeme html značku div. Element div si můžeme představit jako jakýsi panel, do kterého lze vkládat obrázky, text a další. Každému takovému tagu (elementu) div přiřadíme identifikátor (id) a napíšeme css pravidlo (vytvoříme pro něj styly), které bude popisovat vzhled divu s daným identifikátorem.
Jako první vytvoříme div s identifikátorem box, který bude obsahovat celou internetovou stránku.
<body> <div id="box"> </div> </body>
Vytvořili jsme tedy element div s id box, toto id (název) je pro něj jedinečné. Ve stránce se nesmí vyskytovat dva elementy se stejným id.
div#box{ width:900px; margin:auto; background-color:#8cd5f0; }
Jelikož jsme si div pojmenovali (přiřadili jsme mu id), můžeme na něj aplikovat styly, které budou aplikovány jen na něj. Styly se zapisují do css souboru a to tak, že zapíšeme typ elementu, za to znak # a za to id elementu, na který se má styl použít. Seznam stylů pro daný element se zapisuje do složených závorek a jednotlivé příkazy se oddělují středníkem.
Jako první nastavíme šířku divu na 900 pixelů (šířku lze zadávat buď přímo pomocí pixelů, nebo pomocí procent). Můžeme si všimnout, že stejně jako v html souboru zde nezáleží na počtu mezer a nových řádků, proto si vytvoříme souboru přehledný, abychom se v něm vyznali.
Druhé pravidlo se týká levého a pravého okraje. Margin značí vždy odsazení z některé strany, lze použít zvlášť margin-left, margin-right, margin-top a margin-bottom pro definování odsazení z každé strany zvlášť, nebo lze použít souhrnné margin pro souhrnné definování všech odsazení naráz. Položka auto říká, že se má spočítat šířka nadřazeného elementu (zde tedy celé stránky) a div se má vycentrovat. Pro správné fungování margin: auto ale musí mít div nastavenu pevnou šířku.
Poslední pravidlo zadává, jaká barva má být vykreslována na pozadí divu. Barvy lze zadávat pomocí hexadecimálního zápisu RGB (lze získat například z programu Adobe Photoshop), nebo lze použít některou z předdefinovaných barev jako black, white, red apod. (předdefinovány jsou pouze základní barvy).
Prvek box z předchozí části nám tvoří panel pro umístění celé stránky. Nyní ale potřebujeme tento panel rozdělit na hlavičku, menu, obsah a patičku. Toto provedeme přidáním dalších divů, začneme s hlavičkou. Vytvoříme tedy nový div banner a umístíme jej dovnitř divu box. Nezapomeneme mu přiřadit jedinečné id.
<body> <div id="box"> <div id="banner"></div> </div> </body>
Pokračovat budeme přidáním CSS stylů pro tento div.
div#banner{ width:900px; height:250px; background-image:url(../obrazky/banner.jpg); background-position: top center; background-repeat: no-repeat; }
Šířku opět nastavíme na 900 pixelů, aby banner zabíral celou horní plochu. Zde narozdíl od divu box nastavíme i výšku - při tvorbě skutečného webu bychom výšku upravili podle výšky banneru. Poslední věcí je přidání obrázku na pozadí divu, což se provádí pomocí příkazu background-image: url(). V závorce se neuvádějí uvozovky, ovšem většinou nám Adobe Dreamweaver umožní vybrat obrázek jako soubor a cestu doplní sám. Pokud nás překvapila část cesty ../, tak toto znamená návrat o adresář výš, aby bylo možno v celém webu použít relativní cesty a web byl tedy přenosný jako celek.
Příkazy background-position (pozice pozadí je stanovena uprostřed horizontálně a nahoru vertikálně) a background-repeat (je nastaveno neopakovat, ale lze nastavit x-repeat pro vodorovné opakování a y-repeat pro svislé opakování) nejsou povinné, ovšem zamezíme tím chybnému vykreslení banneru, pokud by se stalo, že by měl jiné rozměry, než jsme nastavili u divu.
Úplně obdobně budeme pokračovat s divem menu. Přiřadíme mu jedinečné id a vložíme jej do divu box právě za div banner, aby bylo menu vykresleno až pod bannerem.
<body> <div id="box"> <div id="banner"></div> <div id="menu"> </div> </div> </body>
div#menu{ width:200px; float: left; }
Menu bude mít šířku 200 pixelů. Pokud ovšem budeme chtít, aby bylo menu vůbec vykresleno, musíme do něj umístit nějaký text. V opačném případě nebude vidět, protože jsme mu nenastavili pevnou výšku.
Příkaz float: left je klíčový pro umístění dvou divů vedle sebe. Díky tomuto příkazu docílíme situace, že tento a všechny další divy budou tlačeny nahoru a vlevo za předchozí elementy. U menu to znamená, že bude umístěno v levém horním rohu, což by bylo i tak, ovšem už by nebylo možno přidat vedle něj obsah. Ten by se bez použití příkazu float přidal až pod menu.
Vpravo od menu bude umístěn obsah (content). Přidáme tedy další div právě za menu a přiřadíme mu jedinečné id.
<body> <div id="box"> <div id="banner"></div> <div id="menu"> </div> <div id="content"> Tady bude obsah webu. </div> </div> </body>
div#content{ width:700px; float: right; }
Šířku nastavíme na 700 pixelů, aby dohromady s menu tento div zabíral 900 pixelů, což je šířka celého boxu. Pokud bychom zadali šířku větší, obsah by se posunul až pod menu, protože by se již do boxu nevešel. Na druhou stranu, pokud bychom zadali šířku menší, vznikla by mezera.
Zde používáme příkaz float: right, který dělá to samé jako float: left, ovšem natláčí tento a další elementy nahoru a doprava. Pro obsah to tedy znamená, že bude vsunut napravo od menu místo toho, aby byl přidán až pod div menu.
V tomto obrázku vidíme jednotlivé části ohraničené barevným okrajem pro představu, jak bude web vypadat. Vidíme, že div menu má nulovou výšku, protože v něm není žádný obsah. Pokud bychom nastavili součet šířky menu a obsahu větší než je šířka boxu, došlo by k následující situaci - divy by se umístily pod sebe:
Následující obrázek ještě ilustruje situaci, pokud bychom vůbec nepoužili příkaz float.
Posledním divem, který přidáme, bude div footer. Vložíme jej přímo za div content a přiřadíme mu jedinečné id.
<body> <div id="box"> <div id="banner">Banner webu. </div> <div id="menu"> </div> <div id="content"> Tady bude obsah webu. </div> <div id="footer"> Patička webu. </div> </div> </body>
div#footer{ width:900px; clear: both; }
Nastavíme mu šířku 900 pixelů, aby zabíral celou šířku stránky. Protože již není žádoucí, aby byly další elementy natláčeny vlevo nebo vpravo díky příkazu float, tuto funkci ukončíme příkazem clear: both. Tento příkaz má navíc tu výhodu, že vezme vyšší z divů menu a content (podle jejich obsahů) a výšku druhého na tuto hodnotu automaticky zvětší. Tím dostaneme ve výsledku stránku, která nebude mít nikde mezeru.
Nic víc není třeba, základní kostru pro stránku máme hotovou.