V CSS jsou prvky zásadně zpracovávány jako obdélníkové rámečky nebo pruhy. Pro popis rámečků jsou použity následující - již vám jistě známé - vlastnosti:
• width
- šířka prvku
• height
- výška prvku
• left
- vzdálenost zleva
• right
- vzdálenost zprava
• top
- vzdálenost shora
• bottom
- vzdálenost zdola
• margin
- vnější okraj
• border
- obruba prvku
• padding
- vnitřní mezera, tedy vzdálenost od obruby k obsahu prvku
Tyto vlastnosti byly již představeny.
Celková šířka prvku se skládá z šířky jednotlivých údajů. (Totéž platí pak mimochodem také pro výšku).
Příklad:
div#box { width: 100px; padding: 20px; /* po 20px zleva a zprava / border: 2px solid; po 2px zleva a zprava / margin: 0 30px; po 30px zleva a zprava */ }
Jakou šířku má tento div
-rámeček? Podívejme se na jednotlivé údaje:
• 100 pixelů
• 2krát 20 pixelů
• 2krát 2 pixelů
• 2krát 30 pixelů
To dává celkovou šířku prvku 204 pixelů.
Šířka a výška prvků se určují pomocí width
a height
. Pokud tyto údaje nejsou explicitně uvedeny ve stylovacím souboru, platí následující:
• Chybí-li width
, bude rámeček zobrazen tak široký, jak okolní prvek.<
• Chybí-li height
, bude prvek zobrazen tak vysoký, jak je jeho obsah.
Příklad:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>PSD-Tutorials.de</title> <style> div#box { border: 1px solid; /* po 2px zleva a zprava */ margin: 0 30px; /* po 30px zleva a zprava */ background-color:#6600CC; } </style> </head> <body> <div id="box">PSD-Tutorials.de</div> </body> </html>
V prohlížeči to vypadá následovně:
Nadřazeným prvkem v rámci div
-prvku je body
. Rámeček se tedy skutečně zobrazí tak široký, jak body
-prvek. Pokud jde o výšku, orientuje se podle obsahu.
Všechno na nulu
Každý prohlížeč má v sobě vestavěný stylovací soubor. V těchto souborech jsou definovány některé standardní hodnoty. Platí to například i pro padding
a margin
. Tyto standardní hodnoty se bohužel liší mezi různými prohlížeči. Tento aspekt komplikuje dosažení identických výsledků v jednotlivých prohlížečích v souvislosti s modelováním rámečků. Proto se doporučuje nastavit vzdálenosti, které jsou v prohlížečích přednastaveny, na nulu. Lze to udělat následujícím způsobem:
* { padding: 0; margin: 0; }
Přidejte tento řádek na začátek svého stylovacího souboru. Tímto způsobem můžete začít umisťovat rámečky na požadovaná místa.
Typy rámečků
Jak je prvek nakonec zobrazen a jak ovlivňuje ostatní prvky, záleží na typu prvku. Skutečně se rozlišuje mezi blokovými prvky a řádkovými prvky dle specifikace CSS. (Existují i jiné typy, které zde ale nejsou zmíněny, jelikož mají podřadnou roli).
Blokové prvky vždy vytváří nový řádek. Následující prvky také začínají v novém řádku. Typickými blokovými prvky jsou například p, div, h1, ul
atd. Pro tyto prvky platí uvedené vlastnosti vnější okraj, vnitřní okraj, výška, šířka a obruba.
<h1>Digital Painting & Matte Painting: Definice kompozice obrázku</h1> <p>Modul 2 - část 2: Obrázek je vždy celek. Nicméně vždy je třeba zvážit, kam by se měl divák jako první podívat.</p>
Pohled na výsledek v prohlížeči ukazuje, že h1
a p
vytvářejí každý svůj vlastní řádek.
Řádkové prvky naopak nevytváří vlastní odstavec, ale jsou zobrazovány v běžném toku textu. Typickými řádkovými prvky jsou span, em, strong, img, br
atd. Pro řádkové prvky neplatí žádné vertikální vnější okraje ani šířkové a výškové údaje.
<h1><em>Digitální malba & Matná malba</em>: Definovat strukturu obrázku</h1> <p>Modul 2 - část dva: <strong>Obrázek je vždy celek</strong>. Nicméně vždy je třeba zvážit, kam by se měl divák jako první podívat.</p>
A zde je pohled na výsledek:
Nyní můžete z elementů, které jsou původně blokové, vytvořit elementy inline.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>PSD-Tutorials.de</title> <style> h1 { background-color:#00CCFF; } </style> </head> <body> <h1>Digital Painting & Matte Painting</h1> <p>Modul 2 - Část 2: <em>Obraz je vždy celek</em>. Vždy však musíte zvážit, kam by měl divák nejdříve pohlédnout.</p> </body> </html>
Zobrazte si výsledek v prohlížeči.
Barva pozadí nadpisu h1
signalizuje, že prvek zabírá celou šířku. Šířka se orientuje podle nadřazeného prvku body
.
Nyní se dostává do hry vlastnost display
.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>PSD-Tutorials.de</title> <style> h1 { display:inline; background-color:#00CCFF; } </style> </head> <body> <h1>Digital Painting & Matte Painting</h1> <p>Modul 2 - Část 2: <em>Obraz je vždy celek</em>. Vždy však musíte zvážit, kam by měl divák nejdříve pohlédnout.</p> </body> </html>
Pomocí display: inline
se mění šířka prvku.
Ve skutečnosti se šířka prvku nyní přizpůsobuje obsahu. Zde je přehled hodnot, které lze prveku přiřadit vlastností display:
• none
– neuvidí se
• block
– prvek se zobrazí jako blokový prvek a vytvoří nový řádek.
• inline
– prvek se zobrazí jako inline prvek a objeví se v textovém proudu.
• inline-block
– vzhledově se chová jako blokový prvek, ale můžete nastavit výšku, šířku a vnější okraje. Každý prvek však zůstává v textovém proudu. Jedná se tedy o kombinaci blokového a inline prvku.
• list-item
– prvek se zobrazí jako blokový prvek, ale před něj je přidáno odrážka.
• run-in
– vytvoří buď blokový nebo inline prvek v závislosti na obsahu.
• table
– chová se jako známý prvek table
z HTML.
• inline-table
– chová se jako prvek table
v přímém textu.
• table-row
– prvek obsahuje vedle sebe uspořádané dceřiné prvky. Chová se jako HTML prvek tr.
• table-cell
– prvek představuje buňku tabulky a chová se jako prvky th a td z HTML.
• table-row-group
– prvek obsahuje skupinu prvků s vedle sebe uspořádanými dceřinými prvky a chová se jako prvek tbody
z HTML.
• table-header-group
– prvek obsahuje skupinu prvků s vedle sebe uspořádanými dceřinými prvky a chová se jako prvek thead
z HTML.
• table-footer-group
– prvek obsahuje skupinu prvků s vedle sebe uspořádanými dceřinými prvky a chová se jako prvek tfoot
z HTML.
• table-column
– tímto se popisují vlastnosti buněk sloupce. table-column
se chová jako prvek col
z HTML.
• table-column-group
– tento prvek obsahuje skupinu prvků, přes které jsou popisovány vlastnosti buněk sloupce. Chová se jako prvek colgroup
z HTML.
• table-caption
– pomocí tohoto je definován popisek tabulky. Vlastnost se chová jako prvek caption z HTML.
Ve skutečnosti CSS nabízí různé možnosti zobrazení pro různé typy prvků. Tyto možnosti hrají významnou roli v souvislosti s pozicováním prvků. Více informací v dalších tutoriálech.