Tabulky


border-collapse

V tabulkách se používají dva modely pro práci s rámečky: pro samostatné (separate) rámečky, kdy je zvlášť příslušně orámována každá buňka – a pro sloučené (collapsed) rámečky, kdy rámečky tvoří spíše oddělovače mezi buňkami, procházející skrz tabulku od začátku do konce.

  • povolené hodnoty: collapse | separate | inherit
  • výchozí hodnota: collapse
  • lze použít: v prvcích typu „table“ a „inline-table“

Podle této hodnoty se řídí, zda se použije model samostatného (separate), či sloučeného (collapse) rámování buněk.

border-spacing

Tato vlastnost udává vzdálenost mezi rámečky jednotlivých buněk (je obdobou atributu „cellspacing“ v HTML). Pokud je uvedena jedna hodnota, použije se pro vodorovný i svislý odstup. V případě dvou hodnot první udává vodorovnou vzdálenost a druhá svislou.

  • povolené hodnoty: <velikost><velikost> ? | inherit
  • výchozí hodnota: 0
  • lze použít: v prvcích typu „table“ a „inline-table“
TABLE {border: 1px solid black; border-collapse: separate; border-spacing: 15pt;}

empty-cells

Tato vlastnost řídí, jak je zobrazí (při samostatném rámovacím modelu) prázdné buňky a buňky s visibility:hidden. Při hodnotě show se kolem těchto buněk vykreslí rámeček, při hide nikoli. Pokud je prázdný celý řádek a všechny buňky v něm mají empty-cells:hide, chová se řádek, jako by měl display:none – tedy se vůbec nezobrazí.

  • povolené hodnoty: show | hide | inherit
  • výchozí hodnota: show
  • lze použít: v prvcích typu „table-cell“

Slučovací model rámování

V tomto modelu může být každý rámeček kolem každé strany každé buňky definován na více místech – ve všech prvcích, které se na dané hraně stýkají (buňka, řádek, skupina řádků, sloupec, skupina sloupců i tabulka samotná). Proto jsou nutná pravidla, jak řešit konflikty, když každý z těchto prvků v jednom místě definuje rámeček jinak.

Jak se řeší konflikty u rámečků

Následující pravidla určují, který styl rámečku „vyhraje“ v případě konfliktu:

  • rámečky s border-style: hidden mají absolutní přednost. Jakýkoli rámeček s touto vlastností v daném místě „přebije“ všechny ostatní styly.
  • rámečky s border-style: none mají naopak nejmenší prioritu. Pouze mají-li všechny prvky, které se v daném místě stýkají, hodnotu none, rámeček se nevykreslí (nezapomínejme ovšem, že none je výchozí hodnota pro border-style; stačí tedy, aby rámeček neměl nikdo explicitně definován).
  • pokud žádný z rámečků není hidden a alespoň jeden není none, přednost má silnější rámeček před tenčími. Pokud má více rámečků stejnou šířku (border-width), použije se rámeček se stylem, který má vyšší prioritu. Styly rámečků jsou seřazeny podle priority (od nejvyšší po nejnižší) takto: double, solid, dashed, dotted, ridge, outset, groove a nejnižší: inset.
  • Pokud se rámečky liší pouze barvou, vítězí rámeček definovaný ve „vyšší vrstvě“ tabulky – viz výše.

Styly rámečků (vlastnost border-style) mohou mít v tabulkách stejné hodnoty jako jinde v CSS, ale v tabulkách mají některé hodnoty odlišný význam než v ostatních prvcích. Jedná se o hodnoty:

  • hidden: stejně jako none, ale při slučovacím modelu rámování povoluje použití rámečku z jiného prvku (viz řešení konfliktů výše)
  • outset, resp. inset: v samostatném modelu rámování způsobuje, že celý prvek je zobrazen, jako by vystupoval, resp. byl zapuštěn do pozadí. Ve slučovacím modelu ale mají hodnoty stejný význam jako ridge, resp. groove.